home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / +look_here_1st!+ / reader_requests / alienbreed3d2 / cheesesauce / backupobjdraw < prev    next >
Text File  |  1997-11-28  |  54KB  |  3,782 lines

  1.  
  2. currzone: dc.w 0
  3.  
  4. ty3d: dc.l -100*1024
  5. by3d: dc.l 1*1024
  6.  
  7. TOPOFROOM: dc.l 0
  8. BOTOFROOM: dc.l 0
  9. AFTERWATTOP: dc.l 0
  10. AFTERWATBOT: dc.l 0
  11. BEFOREWATTOP: dc.l 0
  12. BEFOREWATBOT: dc.l 0
  13. ROOMBACK: dc.l 0
  14.  
  15. objclipt: dc.w 0
  16. objclipb: dc.w 0
  17. rightclipb: dc.w 0
  18. leftclipb: dc.w 0
  19.  
  20. ObjDraw:
  21.  
  22.  move.w (a0)+,d0
  23.  cmp.w #1,d0
  24.  blt.s beforewat
  25.  beq.s afterwat
  26.  bgt.s fullroom
  27.  
  28. beforewat:
  29.  move.l BEFOREWATTOP,ty3d
  30.  move.l BEFOREWATBOT,by3d
  31.  bra.s donetopbot
  32.  
  33. afterwat:
  34.  move.l AFTERWATTOP,ty3d
  35.  move.l AFTERWATBOT,by3d
  36.  bra.s donetopbot
  37.  
  38. fullroom:
  39.  move.l TOPOFROOM(pc),ty3d
  40.  move.l BOTOFROOM(pc),by3d
  41.  
  42. donetopbot:
  43.  
  44. ; move.l (a0)+,by3d
  45. ; move.l (a0)+,ty3d
  46.  
  47.  movem.l d0-d7/a1-a6,-(a7)
  48.  
  49.  move.w rightclip,d0
  50.  sub.w leftclip,d0
  51.  subq #1,d0
  52.  ble doneallinfront 
  53.  
  54. ; CACHE_ON d6
  55.  
  56.  move.l ObjectData,a1
  57.  move.l #ObjRotated,a2
  58.  move.l #depthtable,a3
  59.  move.l a3,a4
  60.  move.w #79,d7
  61. emptytab:
  62.  move.l #$80010000,(a3)+
  63.  dbra d7,emptytab
  64.  
  65.  moveq #0,d0
  66. insertanobj
  67.  move.w (a1),d1
  68.  blt sortedall
  69.  move.w GraphicRoom(a1),d2
  70.  cmp.w currzone(pc),d2
  71.  beq.s itsinthiszone 
  72.  
  73. notinthiszone:
  74.  adda.w #64,a1
  75.  addq #1,d0
  76.  bra insertanobj
  77.  
  78. itsinthiszone:
  79.  
  80.  move.b DOUPPER,d4
  81.  move.b ObjInTop(a1),d3
  82.  eor.b d4,d3
  83.  bne.s notinthiszone
  84.  
  85.  move.w 2(a2,d1.w*8),d1    ; zpos
  86.  
  87.  move.l #depthtable-4,a4
  88. stillinfront:
  89.  addq #4,a4
  90.  cmp.w (a4),d1
  91.  blt stillinfront
  92.  move.l #enddepthtab-4,a5
  93. finishedshift
  94.  move.l -(a5),4(a5)
  95.  cmp.l a4,a5
  96.  bgt.s finishedshift
  97.  
  98.  move.w d1,(a4)
  99.  move.w d0,2(a4)
  100.  
  101.  adda.w #64,a1
  102.  addq #1,d0
  103.  
  104.  bra insertanobj
  105.  
  106. sortedall:
  107.  
  108.  move.l #depthtable,a3
  109.  
  110. gobackanddoanother
  111.  move.w (a3)+,d0
  112.  blt.s doneallinfront
  113.  
  114.  move.w (a3)+,d0
  115.  bsr DrawtheObject
  116.  bra gobackanddoanother
  117.  
  118. doneallinfront
  119.  
  120.  movem.l (a7)+,d0-d7/a1-a6
  121.  rts
  122.  
  123. depthtable: ds.l 80
  124. enddepthtab:
  125.  
  126. DrawtheObject:
  127.  
  128.  movem.l d0-d7/a0-a6,-(a7)
  129.   
  130.  move.l ObjectData,a0
  131.  move.l #ObjRotated,a1
  132.  asl.w #6,d0
  133.  adda.w d0,a0
  134.  
  135.  move.w (a0),d0
  136.  move.w 2(a1,d0.w*8),d1    ; z pos
  137.  
  138. ; Go through clip pts to see which
  139. ; apply.
  140.  
  141. ; move.w #0,d2    ; leftclip
  142. ; move.w #96,d3  ; rightclip
  143.  
  144. ; move.l EndOfClipPt,a6
  145. ;checkclips:
  146. ; subq #8,a6
  147. ; cmp.l #ClipTable,a6
  148. ; blt outofcheckclips
  149.  
  150. ; cmp.w 2(a6),d1
  151. ; bgt.s cantleft
  152. ; move.w (a6),d4
  153. ; cmp.w d4,d2
  154. ; bgt.s cantleft
  155. ; move.w d4,d2
  156. ;cantleft:
  157.  
  158. ; cmp.w 6(a6),d1
  159. ; bgt.s cantright
  160. ; move.w 4(a6),d4
  161. ; cmp.w d4,d3
  162. ; blt.s cantright
  163. ; move.w d4,d3
  164. ;cantright:
  165.  
  166. ;outofcheckclips:
  167.  
  168. ; move.w d2,leftclipb
  169. ; move.w d3,rightclipb
  170.  
  171.  move.w leftclip,leftclipb
  172.  move.w rightclip,rightclipb
  173.  
  174.  cmp.b #$ff,6(a0)
  175.  bne BitMapObj
  176.  
  177.  bsr PolygonObj
  178.  movem.l (a7)+,d0-d7/a0-a6
  179.  rts
  180.  
  181. glassobj:
  182.  move.w (a0)+,d0    ;pt num
  183.  move.w 2(a1,d0.w*8),d1
  184.  cmp.w #25,d1
  185.  ble objbehind
  186.  
  187.  move.w topclip,d2
  188.  move.w botclip,d3
  189.  
  190.  move.l ty3d,d6
  191.  sub.l yoff,d6
  192.  divs d1,d6
  193.  add.w MIDDLEY,d6
  194.  cmp.w d3,d6
  195.  bge objbehind
  196.  cmp.w d2,d6
  197.  bge.s .okobtc
  198.  move.w d2,d6
  199. .okobtc:
  200.  move.w d6,objclipt
  201.  
  202.  move.l by3d,d6
  203.  sub.l yoff,d6
  204.  divs d1,d6
  205.  add.w MIDDLEY,d6
  206.  cmp.w d2,d6
  207.  ble objbehind
  208.  cmp.w d3,d6
  209.  ble.s .okobbc
  210.  move.w d3,d6
  211. .okobbc:
  212.  move.w d6,objclipb
  213.  
  214.  move.l 4(a1,d0.w*8),d0
  215.  move.l (a0)+,d2    ; height
  216.  ext.l d2
  217.  asl.l #7,d2
  218.  sub.l yoff,d2
  219.  divs d1,d2    
  220.  add.w MIDDLEY,d2
  221.  
  222.  divs d1,d0
  223.  add.w MIDDLEX,d0    ;x pos of middle
  224.  
  225. ; Need to calculate:
  226. ; Width of object in pixels
  227. ; height of object in pixels
  228. ; horizontal constants
  229. ; vertical constants.
  230.  
  231.  move.l #consttab,a3
  232.  
  233.  moveq #0,d3
  234.  moveq #0,d4
  235.  move.b (a0)+,d3
  236.  move.b (a0)+,d4
  237.  asl.w #7,d3
  238.  asl.w #7,d4
  239.  divs d1,d3 ;width in pixels
  240.  divs d1,d4 ;height in pixels
  241.  sub.w d4,d2
  242.  sub.w d3,d0
  243.  cmp.w rightclipb,d0
  244.  bge objbehind
  245.  add.w d3,d3
  246.  cmp.w objclipb,d2
  247.  bge objbehind
  248.  
  249.  add.w d4,d4
  250.  
  251.  move.w d3,realwidth
  252.  move.w d4,realheight
  253.  
  254. * OBTAIN POINTERS TO HORIZ AND VERT
  255. * CONSTANTS FOR MOVING ACROSS AND
  256. * DOWN THE OBJECT GRAPHIC.
  257.  
  258.  move.w d1,d7
  259.  moveq #0,d6
  260.  move.b 6(a0),d6
  261.  add.w d6,d6
  262.  mulu d6,d7
  263.  move.b -2(a0),d6
  264.  divu d6,d7
  265.  swap d7
  266.  clr.w d7
  267.  swap d7
  268.  
  269.  lea (a3,d7.l*8),a2    ; pointer to
  270.             ; horiz const
  271.  move.w d1,d7
  272.  move.b 7(a0),d6
  273.  add.w d6,d6
  274.  mulu d6,d7
  275.  move.b -1(a0),d6
  276.  divu d6,d7
  277.  swap d7
  278.  clr.w d7
  279.  swap d7
  280.  lea (a3,d7.l*8),a3    ; pointer to
  281.              ; vertical c.
  282.  
  283. * CLIP OBJECT TO TOP AND BOTTOM
  284. * OF THE VISIBLE DISPLAY
  285.  
  286.  moveq #0,d7
  287.  cmp.w objclipt,d2
  288.  bge.s .objfitsontop
  289.  
  290.  sub.w objclipt,d2
  291.  add.w d2,d4    ;new height in
  292.         ;pixels
  293.  ble objbehind  ; nothing to draw
  294.  
  295.  move.w d2,d7
  296.  neg.w d7    ; factor to mult.
  297.          ; constants by
  298.          ; at top of obj.
  299.  move.w objclipt,d2
  300.  
  301. .objfitsontop:
  302.  
  303.  move.w objclipb,d6
  304.  sub.w d2,d6
  305.  cmp.w d6,d4
  306.  ble.s .objfitsonbot
  307.  
  308.  move.w d6,d4
  309.  
  310. .objfitsonbot:
  311.  
  312.  subq #1,d4
  313.  blt objbehind
  314.  
  315.  move.l #ontoscr,a6
  316.  move.l (a6,d2.w*4),d2
  317.  
  318.  add.l FASTBUFFER,d2
  319.  move.l d2,toppt
  320.  
  321.  move.l #WorkSpace,a5
  322.  move.l #glassball,a4
  323.  cmp.w leftclipb,d0
  324.  bge.s .okonleft
  325.  
  326.  sub.w leftclipb,d0
  327.  add.w d0,d3
  328.  ble objbehind
  329.  
  330.  move.w (a2),d1
  331.  move.w 2(a2),d2
  332.  neg.w d0
  333.  muls d0,d1
  334.  mulu d0,d2
  335.  swap d2
  336.  add.w d2,d1
  337.  asl.w #7,d1
  338.  lea (a5,d1.w),a5
  339.  lea (a4,d1.w),a4
  340.  
  341.  move.w leftclipb,d0
  342.  
  343. .okonleft:
  344.  
  345.  move.w d0,d6
  346.  add.w d3,d6
  347.  sub.w rightclipb,d6
  348.  blt.s .okrightside
  349.  
  350.  sub.w #1,d3
  351.  sub.w d6,d3
  352.  
  353. .okrightside:
  354.  
  355.  move.l #objintocop,a1
  356.  sub.l a1,a1
  357.  move.w d0,a1
  358.  add.w a1,a1
  359.  
  360.  move.w (a3),d5
  361.  move.w 2(a3),d6
  362.  muls d7,d5
  363.  mulu d7,d6
  364.  swap d6
  365.  add.w d6,d5
  366. ; add.w 2(a0),d5    ;d5 contains
  367.          ;top offset into
  368.          ;each strip.
  369.  add.l #$80000000,d5
  370.      
  371.  move.l (a2),d6
  372.  moveq.l #0,d7
  373.  move.l a5,midobj
  374.  move.l a4,midglass
  375.  move.l (a3),d2
  376.  swap d2
  377.  move.l #times128,a0
  378.  
  379.  movem.l d0-d7/a0-a6,-(a7)
  380.  
  381.  move.w d3,d1
  382.  ext.l d1
  383.  swap d1
  384.  move.w d4,d2
  385.  ext.l d2
  386.  swap d2
  387.  asr.l #6,d1
  388.  asr.l #6,d2
  389.  move.w d1,d5
  390.  move.w d2,d6
  391.  swap d1
  392.  swap d2
  393.  
  394.  muls #320,d2
  395.  
  396.  move.l #WorkSpace,a0
  397.  
  398.  move.w #63,d0
  399. .readinto:
  400.  swap d0
  401.  move.w #63,d0
  402.  move.l toppt(pc),a6
  403.  adda.w a1,a6
  404.  add.w d1,a1
  405.  add.w d5,d7
  406.  bcc.s .noadmoreh
  407.  addq #1,a1
  408. .noadmoreh:
  409.  swap d7
  410.  move.w #0,d7 
  411. .readintodown:
  412.  move.w (a6),d3
  413.  move.w d3,(a0)+
  414.  add.w d2,a6
  415.  add.w d6,d7
  416.  bcc.s .noadmore
  417.  adda.w #320,a6
  418. .noadmore:
  419.  dbra d0,.readintodown
  420.  swap d0
  421.  swap d7
  422.  dbra d0,.readinto
  423.  
  424.  
  425. ; Want to zoom an area d3*d4
  426. ; in size up to 64*64 in size.
  427. ; move.l #WorkSpace,a0
  428. ; move.l frompt,a2
  429. ; move.w #104*4,d3
  430. ; move.w #1,d6
  431. ;.ribl
  432. ; move.w #31,d0
  433. ;.readinto
  434. ; move.w #15,d1
  435. ; move.l a2,a1
  436. ;.readintodown
  437. ; move.w (a1),(a0)+
  438. ; adda.w d3,a1
  439. ; move.w (a1),(a0)+
  440. ; adda.w d3,a1
  441. ; move.w (a1),(a0)+
  442. ; adda.w d3,a1
  443. ; move.w (a1),(a0)+
  444. ; adda.w d3,a1
  445. ; dbra d1,.readintodown
  446. ;; add.w #256-128,a0
  447. ; addq #4,a2
  448. ; dbra d0,.readinto
  449. ; addq #4,a2
  450. ; dbra d6,.ribl
  451.  
  452.  movem.l (a7)+,d0-d7/a0-a6
  453.  
  454.  move.l #darkentab,a2
  455.  move.l toppt,d1
  456.  add.l a1,d1
  457.  move.l d1,toppt
  458.  move.l d6,a1
  459.  moveq #0,d6
  460.  
  461. .drawrightside:
  462.  swap d7
  463.  move.l midglass(pc),a4
  464.  adda.w (a0,d7.w*2),a4
  465.  swap d7
  466.  add.l a1,d7
  467.  move.l toppt(pc),a6
  468.  addq.l #1,toppt
  469.  
  470.  move.l d5,d1
  471.  move.w d4,-(a7)
  472.  swap d3
  473. .drawavertstrip
  474.  move.w (a4,d1.w*2),d3
  475.  blt.s .itsbackground
  476.  move.b (a5,d3.w*2),d6
  477.  move.b (a2,d6.w),(a6)
  478. .itsbackground
  479.  adda.w #320,a6
  480.  addx.l d2,d1
  481.  dbra d4,.drawavertstrip
  482.  swap d3
  483.  move.w (a7)+,d4
  484.  
  485.  dbra d3,.drawrightside
  486.  movem.l (a7)+,d0-d7/a0-a6
  487.  
  488.  rts
  489.  
  490. realwidth: dc.w 0
  491. realheight: dc.w 0
  492.  
  493. AUXX: dc.w 0
  494. AUXY: dc.w 0
  495.  
  496. midglass:
  497.  dc.l 0
  498. times128:
  499. val SET 0
  500.  REPT 100
  501.  dc.w val*128
  502. val SET val+1
  503.  ENDR
  504.  
  505. BRIGHTTOADD: dc.w 0
  506.  
  507. glareobj:
  508.  
  509.  
  510.  move.w (a0)+,d0    ;pt num
  511.  move.w 2(a1,d0.w*8),d1
  512.  cmp.w #25,d1
  513.  ble objbehind
  514.  
  515.  move.w topclip,d2
  516.  move.w botclip,d3
  517.  
  518.  move.l ty3d,d6
  519.  sub.l yoff,d6
  520.  divs d1,d6
  521.  add.w MIDDLEY,d6
  522.  cmp.w d3,d6
  523.  bge objbehind
  524.  cmp.w d2,d6
  525.  bge.s .okobtc
  526.  move.w d2,d6
  527. .okobtc:
  528.  move.w d6,objclipt
  529.  
  530.  move.l by3d,d6
  531.  sub.l yoff,d6
  532.  divs d1,d6
  533.  add.w MIDDLEY,d6
  534.  cmp.w d2,d6
  535.  ble objbehind
  536.  cmp.w d3,d6
  537.  ble.s .okobbc
  538.  move.w d3,d6
  539. .okobbc:
  540.  move.w d6,objclipb
  541.  
  542.  move.l 4(a1,d0.w*8),d0
  543.  move.w AUXX,d2
  544.  ext.l d2
  545.  asl.l #7,d2
  546.  add.l d2,d0
  547.  addq #2,a0
  548.  move.l #SHADINGTABLE-512,a4
  549.  
  550.  move.w (a0)+,d2    ; height
  551.  add.w AUXY,d2
  552.  ext.l d2
  553.  asl.l #7,d2
  554.  sub.l yoff,d2
  555.  divs d1,d2    
  556.  add.w MIDDLEY,d2
  557.  
  558.  divs d1,d0
  559.  add.w MIDDLEX,d0    ;x pos of middle
  560.  
  561. ; Need to calculate:
  562. ; Width of object in pixels
  563. ; height of object in pixels
  564. ; horizontal constants
  565. ; vertical constants.
  566.  move.l LINKFILE,a6
  567.  lea FrameData(a6),a6
  568.  move.l #Objects,a5
  569.  move.w 2(a0),d7
  570.  neg.w d7
  571.  asl.w #4,d7
  572.  adda.w d7,a5
  573.  asl.w #4,d7
  574.  adda.w d7,a6
  575.  
  576.  move.w 4(a0),d7
  577.  lea (a6,d7.w*8),a6
  578.  
  579.  move.l #consttab,a3
  580.  
  581.  moveq #0,d3
  582.  moveq #0,d4
  583.  move.b (a0)+,d3
  584.  move.b (a0)+,d4
  585.  lsl.l #7,d3
  586.  lsl.l #7,d4
  587.  divs d1,d3 ;width in pixels
  588.  divs d1,d4 ;height in pixels
  589.  
  590.  sub.w d4,d2
  591.  sub.w d3,d0
  592.  cmp.w rightclipb,d0
  593.  bge objbehind
  594.  add.w d3,d3
  595.  cmp.w objclipb,d2
  596.  bge objbehind
  597.  
  598.  add.w d4,d4
  599.  
  600. * OBTAIN POINTERS TO HORIZ AND VERT
  601. * CONSTANTS FOR MOVING ACROSS AND
  602. * DOWN THE OBJECT GRAPHIC.
  603.  
  604.  move.l (a5)+,WAD_PTR
  605.  move.l (a5)+,PTR_PTR
  606.  
  607.  move.l (a6),d7
  608.  move.w d7,DOWN_STRIP
  609.  move.l PTR_PTR,a5
  610.  swap d7
  611.  asl.w #2,d7
  612.  adda.w d7,a5
  613.  
  614.  move.w d1,d7
  615.  moveq #0,d6
  616.  move.w 4(a6),d6
  617.  add.w d6,d6
  618.  subq #1,d6
  619.  mulu d6,d7
  620.  moveq #0,d6
  621.  move.b -2(a0),d6
  622.  beq objbehind
  623.  divu d6,d7
  624.  swap d7
  625.  clr.w d7
  626.  swap d7
  627.  lea (a3,d7.l*8),a2    ; pointer to
  628.             ; horiz const
  629.  move.w d1,d7
  630.  move.w 6(a6),d6
  631.  add.w d6,d6
  632.  subq #1,d6
  633.  mulu d6,d7
  634.  moveq #0,d6
  635.  move.b -1(a0),d6
  636.  beq objbehind
  637.  divu d6,d7
  638.  swap d7
  639.  clr.w d7
  640.  swap d7
  641.  lea (a3,d7.l*8),a3    ; pointer to
  642.              ; vertical c.
  643.  
  644. * CLIP OBJECT TO TOP AND BOTTOM
  645. * OF THE VISIBLE DISPLAY
  646.  
  647.  moveq #0,d7
  648.  cmp.w objclipt,d2
  649.  bge.s objfitsontopGLARE
  650.  
  651.  sub.w objclipt,d2
  652.  add.w d2,d4    ;new height in
  653.         ;pixels
  654.  ble objbehind  ; nothing to draw
  655.  
  656.  move.w d2,d7
  657.  neg.w d7    ; factor to mult.
  658.          ; constants by
  659.          ; at top of obj.
  660.  move.w objclipt,d2
  661.  
  662. objfitsontopGLARE:
  663.  
  664.  move.w objclipb,d6
  665.  sub.w d2,d6
  666.  cmp.w d6,d4
  667.  ble.s objfitsonbotGLARE
  668.  
  669.  move.w d6,d4
  670.  
  671. objfitsonbotGLARE:
  672.  
  673.  subq #1,d4
  674.  blt objbehind
  675.  
  676.  move.l #ontoscr,a6
  677.  move.l (a6,d2.w*4),d2
  678.  add.l FASTBUFFER,d2
  679.  move.l d2,toppt
  680.  
  681.  cmp.w leftclipb,d0
  682.  bge.s okonleftGLARE
  683.  
  684.  sub.w leftclipb,d0
  685.  add.w d0,d3
  686.  ble objbehind
  687.  
  688.  move.w (a2),d1
  689.  move.w 2(a2),d2
  690.  neg.w d0
  691.  muls d0,d1
  692.  mulu d0,d2
  693.  swap d2
  694.  add.w d2,d1
  695.  lea (a5,d1.w*4),a5
  696.  
  697.  move.w leftclipb,d0
  698.  
  699. okonleftGLARE:
  700.  
  701.  move.w d0,d6
  702.  add.w d3,d6
  703.  sub.w rightclipb,d6
  704.  blt.s okrightsideGLARE
  705.  
  706.  sub.w #1,d3
  707.  sub.w d6,d3
  708.  
  709. okrightsideGLARE:
  710.  
  711.  ext.l d0
  712.  add.l d0,toppt
  713.  
  714.  
  715.  move.w (a3),d5
  716.  move.w 2(a3),d6
  717.  muls d7,d5
  718.  mulu d7,d6
  719.  swap d6
  720.  add.w d6,d5
  721.  add.w DOWN_STRIP(PC),d5    ;d5 contains
  722.          ;top offset into
  723.          ;each strip.
  724.  add.l #$80000000,d5
  725.      
  726.  move.l (a2),a2
  727.  moveq.l #0,d7
  728.  move.l a5,midobj
  729.  move.l (a3),d2
  730.  swap d2
  731.  
  732.  move.l #0,a1
  733.  
  734.  
  735. drawrightsideGLARE:
  736.  swap d7
  737.  move.l midobj(pc),a5
  738.  lea (a5,d7.w*4),a5
  739.  swap d7
  740.  add.l a2,d7
  741.  move.l WAD_PTR(PC),a0
  742.  
  743.  move.l toppt(pc),a6
  744.  adda.w a1,a6
  745.  addq #1,a1
  746.  move.l (a5),d1
  747.  beq blankstripGLARE
  748.  
  749.  and.l #$ffffff,d1
  750.  add.l d1,a0
  751.  
  752.  move.b (a5),d1
  753.  cmp.b #1,d1
  754.  bgt.s ThirdThirdGLARE
  755.  beq.s SecThirdGLARE
  756.  move.l d5,d6
  757.  move.l d5,d1
  758.  move.w d4,-(a7)
  759. .drawavertstrip
  760.  move.b 1(a0,d1.w*2),d0
  761.  and.b #%00011111,d0
  762.  beq.s .dontplotthisoneitsblack
  763.  lsl.w #8,d0
  764.  move.b (a6),d0
  765.  move.b (a4,d0.w*2),(a6)
  766. .dontplotthisoneitsblack:
  767.  adda.w #320,a6
  768.  add.l d2,d6
  769.  addx.w d2,d1
  770.  dbra d4,.drawavertstrip
  771.  move.w (a7)+,d4
  772. blankstripGLARE:
  773.  dbra d3,drawrightsideGLARE
  774.  bra objbehind
  775.  
  776. SecThirdGLARE:
  777.  move.l d5,d1
  778.  move.l d5,d6
  779.  move.w d4,-(a7)
  780. .drawavertstrip
  781.  move.w (a0,d1.w*2),d0
  782.  lsr.w #5,d0
  783.  and.w #%11111,d0
  784.  beq.s .dontplotthisoneitsblack
  785.  lsl.w #8,d0
  786.  move.b (a6),d0
  787.  move.b (a4,d0.w*2),(a6)
  788. .dontplotthisoneitsblack:
  789.  adda.w #320,a6
  790.  add.l d2,d6
  791.  addx.w d2,d1
  792.  dbra d4,.drawavertstrip
  793.  move.w (a7)+,d4
  794.  dbra d3,drawrightsideGLARE
  795.  bra objbehind
  796.  
  797. ThirdThirdGLARE:
  798.  move.l d5,d1
  799.  move.l d5,d6
  800.  move.w d4,-(a7)
  801. .drawavertstrip
  802.  move.b (a0,d1.w*2),d0
  803.  lsr.b #2,d0
  804.  and.b #%11111,d0
  805.  beq.s .dontplotthisoneitsblack
  806.  lsl.w #8,d0
  807.  move.b (a6),d0
  808.  move.b (a4,d0.w*2),(a6)
  809. .dontplotthisoneitsblack:
  810.  adda.w #320,a6
  811.  add.l d2,d6
  812.  addx.w d2,d1
  813.  dbra d4,.drawavertstrip
  814.  move.w (a7)+,d4
  815.  dbra d3,drawrightsideGLARE
  816.  
  817.  movem.l (a7)+,d0-d7/a0-a6
  818.  rts
  819.  
  820.  
  821.  
  822. BitMapObj:
  823.  move.l #0,AUXX
  824.  
  825.  cmp.b #3,16(a0)
  826.  bne.s .NOTAUX
  827.  
  828.  move.w auxxoff(a0),AUXX
  829.  move.w auxyoff(a0),AUXY
  830.   
  831. .NOTAUX:
  832.  
  833.  tst.l 8(a0)
  834.  blt glareobj
  835.  
  836.  move.w Facing(a0),FACINGANG
  837.  
  838.  move.w (a0)+,d0    ;pt num
  839.  
  840.  move.l ObjectPoints,a4
  841.  
  842.  move.w (a4,d0.w*8),thisxpos
  843.  move.w 4(a4,d0.w*8),thiszpos
  844.  
  845.  move.w 2(a1,d0.w*8),d1
  846.  cmp.w #25,d1
  847.  ble objbehind
  848.  
  849.  move.w topclip,d2
  850.  move.w botclip,d3
  851.  
  852.  move.l ty3d,d6
  853.  sub.l yoff,d6
  854.  divs d1,d6
  855.  add.w MIDDLEY,d6
  856.  cmp.w d3,d6
  857.  bge objbehind
  858.  cmp.w d2,d6
  859.  bge.s .okobtc
  860.  move.w d2,d6
  861. .okobtc:
  862.  move.w d6,objclipt
  863.  
  864.  move.l by3d,d6
  865.  sub.l yoff,d6
  866.  divs d1,d6
  867.  add.w MIDDLEY,d6
  868.  cmp.w d2,d6
  869.  ble objbehind
  870.  cmp.w d3,d6
  871.  ble.s .okobbc
  872.  move.w d3,d6
  873. .okobbc:
  874.  move.w d6,objclipb
  875.  
  876.  move.l 4(a1,d0.w*8),d0
  877.  move.w AUXX,d2
  878.  ext.l d2
  879.  asl.l #7,d2
  880.  add.l d2,d0
  881.  move.w d1,d6
  882.  asr.w #4,d6
  883.  add.w (a0)+,d6
  884.  move.w d6,BRIGHTTOADD
  885.  
  886.  bge.s brighttoonot
  887.  moveq #0,d6
  888. brighttoonot
  889.  sub.l a4,a4
  890.  move.w objscalecols(pc,d6.w*2),a4
  891.  bra pastobjscale
  892.  
  893. objscalecols:
  894.  dcb.w  1,64*0
  895.  dcb.w  2,64*1
  896.  dcb.w  2,64*2
  897.  dcb.w  2,64*3
  898.  dcb.w  2,64*4
  899.  dcb.w  2,64*5
  900.  dcb.w  2,64*6
  901.  dcb.w  2,64*7
  902.  dcb.w  2,64*8
  903.  dcb.w  2,64*9
  904.  dcb.w  2,64*10
  905.  dcb.w  2,64*11
  906.  dcb.w  2,64*12
  907.  dcb.w  2,64*13
  908.  dcb.w  2,64*14
  909.  dcb.w  2,64*15
  910.  dcb.w  2,64*16
  911.  dcb.w  2,64*17
  912.  dcb.w  2,64*18
  913.  dcb.w  2,64*19
  914.  dcb.w  2,64*20
  915.  dcb.w  2,64*21
  916.  dcb.w  2,64*22
  917.  dcb.w  2,64*23
  918.  dcb.w  2,64*24
  919.  dcb.w  2,64*25
  920.  dcb.w  2,64*26
  921.  dcb.w  2,64*27
  922.  dcb.w  2,64*28
  923.  dcb.w  2,64*29
  924.  dcb.w  2,64*30
  925.  dcb.w  20,64*31
  926.  
  927. WHICHLIGHTPAL: dc.w 0
  928. FLIPIT: dc.w 0
  929. FLIPPEDIT: dc.w 0
  930. LIGHTIT: dc.w 0
  931. BASEPAL: dc.l 0
  932.  
  933. pastobjscale:
  934.  
  935.  move.w (a0)+,d2    ; height
  936.  add.w AUXY,d2
  937.  ext.l d2
  938.  asl.l #7,d2
  939.  sub.l yoff,d2
  940.  divs d1,d2    
  941.  add.w MIDDLEY,d2
  942.  
  943.  
  944.  divs d1,d0
  945.  add.w MIDDLEX,d0    ;x pos of middle
  946.  
  947. ; Need to calculate:
  948. ; Width of object in pixels
  949. ; height of object in pixels
  950. ; horizontal constants
  951. ; vertical constants.
  952.  
  953.  move.l LINKFILE,a6
  954.  lea FrameData(a6),a6
  955.  move.l #Objects,a5
  956.  move.w 2(a0),d7
  957.  asl.w #4,d7
  958.  adda.w d7,a5
  959.  asl.w #4,d7
  960.  adda.w d7,a6
  961.  
  962.  clr.b LIGHTIT
  963.  move.b 4(a0),d7
  964.  btst #7,d7
  965.  sne FLIPIT
  966.  and.b #127,d7
  967.  sub.b #2,d7
  968.  blt.s .NOTALIGHT
  969.  
  970.  st LIGHTIT
  971.  move.b d7,WHICHLIGHTPAL
  972.  
  973. .NOTALIGHT:
  974.  
  975.  moveq #0,d7
  976.  move.b 5(a0),d7
  977.  lea (a6,d7.w*8),a6
  978.  
  979.  move.l #consttab,a3
  980.  
  981.  moveq #0,d3
  982.  moveq #0,d4
  983.  move.b (a0)+,d3
  984.  move.b (a0)+,d4
  985.  lsl.l #7,d3
  986.  lsl.l #7,d4
  987.  divs d1,d3 ;width in pixels
  988.  divs d1,d4 ;height in pixels
  989.  
  990.  sub.w d4,d2
  991.  sub.w d3,d0
  992.  cmp.w rightclipb,d0
  993.  bge objbehind
  994.  add.w d3,d3
  995.  cmp.w objclipb,d2
  996.  bge objbehind
  997.  
  998.  add.w d4,d4
  999.  
  1000. * OBTAIN POINTERS TO HORIZ AND VERT
  1001. * CONSTANTS FOR MOVING ACROSS AND
  1002. * DOWN THE OBJECT GRAPHIC.
  1003.  
  1004.  move.l (a5)+,WAD_PTR
  1005.  move.l (a5)+,PTR_PTR
  1006.  add.l 4(a5),a4
  1007.  move.l 4(a5),BASEPAL
  1008.  
  1009.  move.l (a6),d7
  1010.  move.w d7,DOWN_STRIP
  1011.  move.l PTR_PTR,a5
  1012.  
  1013.  tst.b FLIPIT
  1014.  beq.s .nfl1
  1015.  
  1016.  move.w 4(a6),d6
  1017.  add.w d6,d6
  1018.  subq #1,d6
  1019.  lea (a5,d6.w*4),a5
  1020.  
  1021. .nfl1:
  1022.  swap d7
  1023.  asl.w #2,d7
  1024.  adda.w d7,a5
  1025. fl1:
  1026.  
  1027.  move.w d1,d7
  1028.  moveq #0,d6
  1029.  move.w 4(a6),d6
  1030.  add.w d6,d6
  1031.  subq #1,d6
  1032.  mulu d6,d7
  1033.  moveq #0,d6
  1034.  move.b -2(a0),d6
  1035.  beq objbehind
  1036.  divu d6,d7
  1037.  swap d7
  1038.  clr.w d7
  1039.  swap d7
  1040.  lea (a3,d7.l*8),a2    ; pointer to
  1041.             ; horiz const
  1042.  move.w d1,d7
  1043.  move.w 6(a6),d6
  1044.  add.w d6,d6
  1045.  subq #1,d6
  1046.  mulu d6,d7
  1047.  moveq #0,d6
  1048.  move.b -1(a0),d6
  1049.  beq objbehind
  1050.  divu d6,d7
  1051.  swap d7
  1052.  clr.w d7
  1053.  swap d7
  1054.  lea (a3,d7.l*8),a3    ; pointer to
  1055.              ; vertical c.
  1056.  
  1057. * CLIP OBJECT TO TOP AND BOTTOM
  1058. * OF THE VISIBLE DISPLAY
  1059.  
  1060.  moveq #0,d7
  1061.  cmp.w objclipt,d2
  1062.  bge.s objfitsontop
  1063.  
  1064.  sub.w objclipt,d2
  1065.  add.w d2,d4    ;new height in
  1066.         ;pixels
  1067.  ble objbehind  ; nothing to draw
  1068.  
  1069.  move.w d2,d7
  1070.  neg.w d7    ; factor to mult.
  1071.          ; constants by
  1072.          ; at top of obj.
  1073.  move.w objclipt,d2
  1074.  
  1075. objfitsontop:
  1076.  
  1077.  move.w objclipb,d6
  1078.  sub.w d2,d6
  1079.  cmp.w d6,d4
  1080.  ble.s objfitsonbot
  1081.  
  1082.  move.w d6,d4
  1083.  
  1084. objfitsonbot:
  1085.  
  1086.  subq #1,d4
  1087.  blt objbehind
  1088.  
  1089.  move.l #ontoscr,a6
  1090.  move.l (a6,d2.w*4),d2
  1091.  add.l FASTBUFFER,d2
  1092.  move.l d2,toppt
  1093.  
  1094.  cmp.w leftclipb,d0
  1095.  bge.s okonleft
  1096.  
  1097.  sub.w leftclipb,d0
  1098.  add.w d0,d3
  1099.  ble objbehind
  1100.  
  1101.  move.w (a2),d1
  1102.  move.w 2(a2),d2
  1103.  neg.w d0
  1104.  muls d0,d1
  1105.  mulu d0,d2
  1106.  swap d2
  1107.  add.w d2,d1
  1108.  move.w leftclipb,d0
  1109.  
  1110.  asl.w #2,d1
  1111.  tst.b FLIPIT
  1112.  beq.s .nfl2
  1113.  
  1114.  suba.w d1,a5
  1115.  suba.w d1,a5
  1116.  
  1117. .nfl2:
  1118.  
  1119.  adda.w d1,a5 
  1120.  
  1121. okonleft:
  1122.  
  1123.  move.w d0,d6
  1124.  add.w d3,d6
  1125.  sub.w rightclipb,d6
  1126.  blt.s okrightside
  1127.  
  1128.  sub.w #1,d3
  1129.  sub.w d6,d3
  1130.  
  1131. okrightside:
  1132.  
  1133.  ext.l d0
  1134.  add.l d0,toppt
  1135.  
  1136.  move.w (a3),d5
  1137.  move.w 2(a3),d6
  1138.  muls d7,d5
  1139.  mulu d7,d6
  1140.  swap d6
  1141.  add.w d6,d5
  1142.  add.w DOWN_STRIP(PC),d5    ;d5 contains
  1143.          ;top offset into
  1144.          ;each strip.
  1145.  add.l #$80000000,d5
  1146.      
  1147.  move.l (a2),d7
  1148.  tst.b FLIPIT
  1149.  beq.s .nfl3
  1150.  neg.l d7
  1151. .nfl3:
  1152.  move.l d7,a2
  1153.  moveq.l #0,d7
  1154.  move.l a5,midobj
  1155.  move.l (a3),d2
  1156.  swap d2
  1157.  
  1158.  move.l #0,a1
  1159.  
  1160.  tst.b LIGHTIT
  1161.  bne DRAWITLIGHTED
  1162.  
  1163.  
  1164. drawrightside:
  1165.  swap d7
  1166.  move.l midobj(pc),a5
  1167.  lea (a5,d7.w*4),a5
  1168.  swap d7
  1169.  add.l a2,d7
  1170.  move.l WAD_PTR(PC),a0
  1171.  
  1172.  move.l toppt(pc),a6
  1173.  adda.w a1,a6
  1174.  addq #1,a1
  1175.  move.l (a5),d1
  1176.  beq blankstrip
  1177.  
  1178.  and.l #$ffffff,d1
  1179.  add.l d1,a0
  1180.  
  1181.  move.b (a5),d1
  1182.  cmp.b #1,d1
  1183.  bgt.s ThirdThird
  1184.  beq.s SecThird
  1185.  move.l d5,d6
  1186.  move.l d5,d1
  1187.  move.w d4,-(a7)
  1188. .drawavertstrip
  1189.  move.b 1(a0,d1.w*2),d0
  1190.  and.b #%00011111,d0
  1191.  beq.s .dontplotthisoneitsblack
  1192.  move.b (a4,d0.w*2),(a6)
  1193. .dontplotthisoneitsblack:
  1194.  adda.w #320,a6
  1195.  add.l d2,d6
  1196.  addx.w d2,d1
  1197.  dbra d4,.drawavertstrip
  1198.  move.w (a7)+,d4
  1199. blankstrip:
  1200.  dbra d3,drawrightside
  1201.  bra.s objbehind
  1202.  
  1203. SecThird:
  1204.  move.l d5,d1
  1205.  move.l d5,d6
  1206.  move.w d4,-(a7)
  1207. .drawavertstrip
  1208.  move.w (a0,d1.w*2),d0
  1209.  lsr.w #5,d0
  1210.  and.w #%11111,d0
  1211.  beq.s .dontplotthisoneitsblack
  1212.  move.b (a4,d0.w*2),(a6)
  1213. .dontplotthisoneitsblack:
  1214.  adda.w #320,a6
  1215.  add.l d2,d6
  1216.  addx.w d2,d1
  1217.  dbra d4,.drawavertstrip
  1218.  move.w (a7)+,d4
  1219.  dbra d3,drawrightside
  1220.  bra.s objbehind
  1221.  
  1222. ThirdThird:
  1223.  move.l d5,d1
  1224.  move.l d5,d6
  1225.  move.w d4,-(a7)
  1226. .drawavertstrip
  1227.  move.b (a0,d1.w*2),d0
  1228.  lsr.b #2,d0
  1229.  and.b #%11111,d0
  1230.  beq.s .dontplotthisoneitsblack
  1231.  move.b (a4,d0.w*2),(a6)
  1232. .dontplotthisoneitsblack:
  1233.  adda.w #320,a6
  1234.  add.l d2,d6
  1235.  addx.w d2,d1
  1236.  dbra d4,.drawavertstrip
  1237.  move.w (a7)+,d4
  1238.  dbra d3,drawrightside
  1239.  
  1240. objbehind:
  1241.  movem.l (a7)+,d0-d7/a0-a6
  1242.  rts
  1243.  
  1244. DRAWITLIGHTED:
  1245.  
  1246. ; Make up lighting values
  1247.  
  1248.  movem.l d0-d7/a0-a6,-(a7)
  1249.  
  1250. ; Need to scan around zone points putting in
  1251. ; brightnesses.
  1252.  
  1253.  move.l #ANGLEBRIGHTS,a2
  1254.  move.l #$80808080,(a2)
  1255.  move.l #$80808080,4(a2)
  1256.  move.l #$80808080,8(a2)
  1257.  move.l #$80808080,12(a2)
  1258.  move.l #$80808080,16(a2)
  1259.  move.l #$80808080,20(a2)
  1260.  move.l #$80808080,24(a2)
  1261.  move.l #$80808080,28(a2)
  1262.  
  1263.  move.l #$80808080,32(a2)
  1264.  move.l #$80808080,36(a2)
  1265.  move.l #$80808080,40(a2)
  1266.  move.l #$80808080,44(a2)
  1267.  move.l #$80808080,48(a2)
  1268.  move.l #$80808080,52(a2)
  1269.  move.l #$80808080,56(a2)
  1270.  move.l #$80808080,60(a2)
  1271.  
  1272.  
  1273.  move.w currzone(pc),d0
  1274.  bsr CALCBRIGHTSINZONE
  1275.  
  1276.  move.l #ANGLEBRIGHTS+32,a2
  1277.  
  1278. ; Now do the brightnesses of surrounding
  1279. ; zones:
  1280.  
  1281.  move.l FloorLines,a1
  1282.  move.w currzone,d0
  1283.  move.l ZoneAdds,a4
  1284.  move.l (a4,d0.w*4),a4
  1285.  add.l LEVELDATA,a4
  1286.  move.l a4,a5
  1287.  
  1288.  adda.w ToExitList(a4),a5
  1289.  
  1290. .doallwalls
  1291.  move.w (a5)+,d0
  1292.  blt .nomorewalls
  1293.  
  1294.  asl.w #4,d0
  1295.  lea (a1,d0.w),a3
  1296.  
  1297.  move.w 8(a3),d0
  1298.  blt.s .solidwall ; a wall not an exit.
  1299.  
  1300.  movem.l a1/a4/a5,-(a7) 
  1301.  bsr CALCBRIGHTSINZONE
  1302.  movem.l (a7)+,a1/a4/a5
  1303.  bra .doallwalls
  1304.  
  1305. .solidwall:
  1306.  move.w 4(a3),d1
  1307.  move.w 6(a3),d2
  1308.  
  1309.  move.w oldx,newx
  1310.  move.w oldz,newz
  1311.  sub.w d2,newx
  1312.  add.w d1,newz
  1313.  
  1314.  movem.l d0-d7/a0-a6,-(a7)
  1315.  jsr HeadTowardsAng
  1316.  movem.l (a7)+,d0-d7/a0-a6
  1317.  move.w AngRet,d1
  1318.  neg.w d1
  1319.  and.w #8191,d1
  1320.  asr.w #8,d1
  1321.  asr.w #1,d1
  1322.  
  1323.  move.b #48,(a2,d1.w)
  1324.  move.b #48,16(a2,d1.w)
  1325.  bra .doallwalls 
  1326.  
  1327. .nomorewalls:
  1328.  
  1329.  
  1330. ; move.b #0,(a2)
  1331. ; move.b #20,8(a2)
  1332. ; move.b #0,16(a2)
  1333. ; move.b #20,24(a2)
  1334.  
  1335.  move.l #ANGLEBRIGHTS,a0
  1336.  bsr TWEENBRIGHTS
  1337.  move.l #ANGLEBRIGHTS+16,a0
  1338.  bsr TWEENBRIGHTS
  1339.  move.l #ANGLEBRIGHTS+32,a0
  1340.  bsr TWEENBRIGHTS
  1341.  move.l #ANGLEBRIGHTS+48,a0
  1342.  bsr TWEENBRIGHTS
  1343.  
  1344.  move.l #ANGLEBRIGHTS,a0
  1345.  move.b #15,d0
  1346. ADDBRIGHTS
  1347.  
  1348.  moveq #0,d3
  1349.  moveq #0,d4
  1350.  move.b 32(a0),d3
  1351.  move.b 48(a0),d4
  1352.  neg.w d3
  1353.  add.w #48,d3
  1354.  neg.w d4
  1355.  add.w #48,d4
  1356.  asr.w #1,d4
  1357.  asr.w #1,d3
  1358.  sub.b 16(a0),d4
  1359.  ble.s .ok2
  1360.  moveq #0,d4
  1361. .ok2:
  1362.  sub.b (a0),d3
  1363.  ble.s .ok1
  1364.  moveq #0,d3
  1365. .ok1:
  1366.  neg.b d3
  1367.  neg.b d4
  1368.  
  1369.  move.b d4,16(a0)
  1370.  move.b d3,(a0)+ 
  1371.  
  1372.  dbra d0,ADDBRIGHTS
  1373.  
  1374. ; move.w PLR1_xoff,newx
  1375. ; move.w PLR1_zoff,newz
  1376. ; move.w thisxpos,oldx
  1377. ; move.w thiszpos,oldz
  1378. ; movem.l d0-d7/a0-a6,-(a7)
  1379. ; jsr HeadTowardsAng
  1380. ; movem.l (a7)+,d0-d7/a0-a6
  1381.  
  1382.  
  1383. ; move.w #0,d0
  1384. ; move.w AngRet,d0
  1385.  move.w p1_angpos,d0
  1386.  neg.w d0
  1387.  add.w #4096,d0
  1388.  and.w #8191,d0
  1389.  asr.w #8,d0
  1390.  asr.w #1,d0
  1391.  
  1392.  sub.b #6,d0
  1393.  and.b #15,d0
  1394.  move.l #ANGLEBRIGHTS,a1
  1395.  
  1396.  move.l #willy,a0
  1397.  moveq #6,d1
  1398. .across:
  1399.  moveq #0,d3
  1400.  moveq #0,d4
  1401.  move.b (a1,d0.w),d4
  1402.  bge.s .okp1
  1403.  moveq #0,d4
  1404. .okp1
  1405.  
  1406.  move.b 16(a1,d0.w),d3
  1407.  bge.s .okp2
  1408.  moveq #0,d3
  1409. .okp2
  1410.  sub.w d3,d4
  1411.  swap d3
  1412.  swap d4
  1413.  divs.l #7,d4
  1414.  moveq #6,d2
  1415.  moveq #0,d5
  1416. .down:
  1417.  swap d3
  1418.  move.w d3,(a0,d5.w*2)
  1419.  swap d3
  1420.  addq #7,d5
  1421.  add.l d4,d3
  1422.  dbra d2,.down
  1423.  addq #2,d0
  1424.  and.w #15,d0
  1425.  addq #2,a0
  1426.  dbra d1,.across
  1427.  
  1428.  
  1429.  move.w BRIGHTTOADD,d0
  1430.  move.l #willy,a0
  1431.  move.l #willybright,a1
  1432.  move.w #48,d1
  1433. ADDITIN:
  1434.  
  1435.  move.w d0,d2
  1436.  add.w (a1)+,d2
  1437.  ble.s .nopos
  1438.  
  1439.  moveq #0,d2
  1440.  
  1441. .nopos:
  1442.  
  1443.  add.w d2,(a0)+
  1444.  
  1445.  dbra d1,ADDITIN
  1446.  
  1447.  
  1448.  
  1449.  tst.b FLIPIT
  1450.  beq.s LEFTTORIGHT
  1451.  
  1452.  move.l #Brights2,a0
  1453.  bra DONERIGHTTOLEFT
  1454.  
  1455. LEFTTORIGHT:
  1456.  
  1457.  move.l #Brights,a0
  1458. DONERIGHTTOLEFT:
  1459.  move.l #willy,a2
  1460.  move.l BASEPAL,a1
  1461.  move.b WHICHLIGHTPAL,d0
  1462.  asl.w #8,d0
  1463.  add.w d0,a1 
  1464.  move.l #PALS,a3
  1465.  move.w #28,d0
  1466. makepals:
  1467.  
  1468.  move.w (a0)+,d1
  1469.  move.w (a2,d1.w*2),d1
  1470.  bge.s .okpos
  1471.  moveq #0,d1
  1472. .okpos: 
  1473.  cmp.w #31,d1
  1474.  blt.s .okneg
  1475.  move.w #31,d1
  1476. .okneg:
  1477.  
  1478.  move.l (a1,d1.w*8),(a3)+
  1479.  move.b #0,-4(a3)
  1480.  move.l 4(a1,d1.w*8),(a3)+
  1481.  
  1482.  dbra d0,makepals
  1483.  
  1484.  movem.l (a7)+,d0-d7/a0-a6
  1485.  
  1486.  move.l #PALS,a4
  1487.  
  1488. drawlightlop
  1489.  swap d7
  1490.  move.l midobj(pc),a5
  1491.  lea (a5,d7.w*4),a5
  1492.  swap d7
  1493.  add.l a2,d7
  1494.  move.l WAD_PTR(PC),a0
  1495.  
  1496.  move.l toppt(pc),a6
  1497.  adda.w a1,a6
  1498.  addq #1,a1
  1499.  move.l (a5),d1
  1500.  beq .blankstrip
  1501.  
  1502.  add.l d1,a0
  1503.  
  1504.  move.l d5,d6
  1505.  move.l d5,d1
  1506.  move.w d4,-(a7)
  1507. .drawavertstrip
  1508.  move.b (a0,d1.w),d0
  1509.  beq.s .dontplotthisoneitsblack
  1510.  move.b (a4,d0.w),(a6)
  1511. .dontplotthisoneitsblack:
  1512.  adda.w #320,a6
  1513.  add.l d2,d6
  1514.  addx.w d2,d1
  1515.  dbra d4,.drawavertstrip
  1516.  move.w (a7)+,d4
  1517. .blankstrip:
  1518.  dbra d3,drawlightlop
  1519.  bra objbehind
  1520.  
  1521. TWEENBRIGHTS:
  1522.  
  1523.  moveq #0,d0
  1524. .backinto:
  1525.  cmp.b #-128,(a0,d0.w)
  1526.  bne.s .okbr
  1527.  addq #1,d0
  1528.  bra.s .backinto
  1529.  
  1530. .okbr:
  1531.  
  1532.  move.b d0,d7 ;starting pos
  1533.  move.b d0,d1 ;previous pos
  1534.  
  1535. ; tween to next value
  1536. .findnext
  1537.  addq #1,d0
  1538.  and.w #15,d0
  1539.  cmp.b #-128,(a0,d0.w)
  1540.  beq.s .findnext
  1541.  
  1542.  moveq #0,d2
  1543.  moveq #0,d3
  1544.  move.b (a0,d1.w),d2
  1545.  move.b (a0,d0.w),d3
  1546.  sub.w d2,d3
  1547.  
  1548.  move.w d0,d4
  1549.  sub.w d1,d4
  1550.  bgt.s .okpos
  1551.  add.w #16,d4
  1552. .okpos:
  1553.  
  1554.  swap d2
  1555.  swap d3
  1556.  ext.l d4
  1557.  divs.l d4,d3
  1558.  
  1559.  subq #1,d4 ; number of tweens
  1560.  
  1561. .putintween
  1562.  swap d2
  1563.  move.b d2,(a0,d1.w)
  1564.  swap d2
  1565.  add.l d3,d2
  1566.  addq #1,d1
  1567.  and.w #15,d1
  1568.  dbra d4,.putintween
  1569.  
  1570.  cmp.b d0,d7
  1571.  beq.s .doneall
  1572.  
  1573.  move.w d0,d1
  1574.  bra .findnext
  1575.  
  1576. .doneall
  1577.  
  1578.  rts
  1579.  
  1580.  
  1581. *************************************
  1582. CALCBRIGHTSINZONE:
  1583.  move.w d0,d1
  1584.  muls #20,d1
  1585.  move.l ZoneBorderPts,a1
  1586.  add.l d1,a1
  1587.  move.l #CurrentPointBrights,a0
  1588.  lea (a0,d1.l*4),a0
  1589. ; A0 points at the brightnesses of the zone points.
  1590. ; a1 points at the border points of the zone.
  1591. ; list is terminated with -1.
  1592.  
  1593.  move.l Points,a3
  1594.  
  1595.  
  1596.  move.w thisxpos,oldx
  1597.  move.w thiszpos,oldz
  1598.  move.w #10,speed
  1599.  move.w #0,Range
  1600.  
  1601. DOPTBR
  1602.  move.w (a1)+,d0    ;pt number
  1603.  blt DONEPTBR
  1604.  
  1605.  move.w (a3,d0.w*4),newx
  1606.  move.w 2(a3,d0.w*4),newz
  1607.  
  1608.  movem.l d0-d7/a0-a6,-(a7)
  1609.  jsr HeadTowardsAng
  1610.  movem.l (a7)+,d0-d7/a0-a6
  1611.  
  1612.  move.w AngRet,d1
  1613.  neg.w d1
  1614.  and.w #8191,d1
  1615.  asr.w #8,d1
  1616.  asr.w #1,d1
  1617.  
  1618.  move.w (a0),d0
  1619.  bge.s .okpos
  1620.  add.w #332,d0
  1621.  asr.w #2,d0
  1622.  neg.w d0
  1623.  add.w #332,d0
  1624.  
  1625. .okpos
  1626.  sub.w #300,d0
  1627.  bge.s .okpos3
  1628.  move.w #0,d0
  1629. .okpos3:
  1630.  move.b d0,d2
  1631.  asr.b #1,d2
  1632.  add.b d2,d0
  1633.  move.b d0,(a2,d1.w)
  1634.  move.w 2(a0),d0
  1635.  bge.s .okpos2
  1636.  add.w #332,d0
  1637.  asr.w #2,d0
  1638.  neg.w d0
  1639.  add.w #332,d0
  1640. .okpos2
  1641.  sub.w #300,d0
  1642.  bge.s .okpos4
  1643.  move.w #0,d0
  1644. .okpos4:
  1645.  
  1646.  move.b d0,d2
  1647.  asr.b #1,d2
  1648.  add.b d2,d0
  1649.  move.b d0,16(a2,d1.w)
  1650.  adda.w #8,a0
  1651.  
  1652.  bra DOPTBR
  1653. DONEPTBR
  1654.  rts
  1655.  
  1656. thisxpos: dc.w 0
  1657. thiszpos: dc.w 0
  1658. FACINGANG: dc.w 0
  1659.  
  1660. ANGLEBRIGHTS: ds.l 8*2
  1661.  
  1662. Brights:
  1663.  dc.w 3
  1664.  dc.w 8,9,10,11,12
  1665.  dc.w 15,16,17,18,19
  1666.  dc.w 21,22,23,24,25,26,27
  1667.  dc.w 29,30,31,32,33
  1668.  dc.w 36,37,38,39,40
  1669.  dc.w 45
  1670.  
  1671. Brights2:
  1672.  dc.w 3
  1673.  dc.w 12,11,10,9,8
  1674.  dc.w 19,18,17,16,15
  1675.  dc.w 27,26,25,24,23,22,21
  1676.  dc.w 33,32,31,30,29
  1677.  dc.w 40,39,38,37,36
  1678.  dc.w 45
  1679.  
  1680.  
  1681. PALS:
  1682.  ds.l 2*49
  1683.  
  1684. willy:
  1685.  dc.w 0,0,0,0,0,0,0
  1686.  dc.w 5,5,5,5,5,5,5
  1687.  dc.w 10,10,10,10,10,10,10
  1688.  dc.w 15,15,15,15,15,15,15
  1689.  dc.w 20,20,20,20,20,20,20
  1690.  dc.w 25,25,25,25,25,25,25
  1691.  dc.w 30,30,30,30,30,30,30
  1692.  
  1693. willybright:
  1694.  dc.w 30,30,30,30,30,30,30
  1695.  dc.w 30,20,20,20,20,20,30
  1696.  dc.w 30,20,6,3,6,20,30
  1697.  dc.w 30,20,6,0,6,20,30
  1698.  dc.w 30,20,6,6,6,20,30
  1699.  dc.w 30,20,20,20,20,20,30
  1700.  dc.w 30,30,30,30,30,30,30
  1701.  
  1702. midx: dc.w 0
  1703. objpixwidth: dc.w 0
  1704. tmptst: dc.l 0
  1705. toppt: dc.l 0
  1706. doneit: dc.w 0
  1707. replaceend: dc.w 0
  1708. saveend: dc.w 0
  1709. midobj: dc.l 0
  1710. obadd: dc.l 0 
  1711. DOWN_STRIP: dc.w 0
  1712. WAD_PTR: dc.l 0
  1713. PTR_PTR: dc.l 0
  1714.  
  1715.  ds.w 100
  1716. objintocop:
  1717.  incbin "ab3:includes/XTOCOPX"
  1718.  ds.w 100
  1719.  
  1720.    *********************************
  1721. ***************************************
  1722.    ********************************* 
  1723. tstddd: dc.l 0 
  1724.  
  1725. polybehind:
  1726.  rts
  1727.  
  1728. SORTIT: dc.w 0
  1729.  
  1730. objbright:
  1731.  dc.w 0
  1732. ObjAng: dc.w 0
  1733.  
  1734. PolygonObj:
  1735.  
  1736. ************************
  1737.  
  1738. ; move.w 4(a0),d0    ; ypos
  1739. ; move.w 2(a0),d1
  1740. ; add.w #2,d1
  1741. ; add.w d1,d0
  1742. ; cmp.w #-48,d0
  1743. ; blt nobounce
  1744. ; neg.w d1
  1745. ; add.w d1,d0
  1746. ;nobounce:
  1747. ; move.w d1,2(a0)
  1748. ; move.w d0,4(a0)
  1749.  
  1750. ; add.w #80*2,boxang
  1751. ; and.w #8191,boxang
  1752.  
  1753. ************************
  1754.  
  1755.  move.w Facing(a0),ObjAng
  1756.  
  1757.  move.w (a0)+,d0
  1758.  move.w 2(a1,d0.w*8),d1    ; zpos of mid
  1759.  blt polybehind
  1760.  bgt.s .okinfront
  1761.  
  1762.  move.l a0,a3
  1763.  sub.l PLR1_Obj,a3
  1764.  cmp.l #130,a3
  1765.  bne polybehind
  1766.  
  1767.  move.w #10,d1
  1768.  
  1769. .okinfront:
  1770.  
  1771.  move.w (a0),d2
  1772.  move.w d1,d3
  1773.  asr.w #7,d3
  1774.  add.w d3,d2
  1775.  move.w d2,objbright
  1776.  
  1777.  move.w topclip,d2
  1778.  move.w botclip,d3
  1779.  
  1780.  move.w d2,objclipt
  1781.  move.w d3,objclipb
  1782.  
  1783. ; dont use d1 here.
  1784.  
  1785.  move.w 6(a0),d5
  1786.  move.l #POLYOBJECTS,a3
  1787.  move.l (a3,d5.w*4),a3
  1788.  
  1789.  move.w (a3)+,SORTIT
  1790.  
  1791.  move.l a3,START_OF_OBJ
  1792.  
  1793. *******************************************************************
  1794. ***************************************************************
  1795. *****************************************************************
  1796.  
  1797.  move.w (a3)+,num_points
  1798.  move.w (a3)+,d6    ; num_frames
  1799.  
  1800.  
  1801.  move.l a3,POINTER_TO_POINTERS
  1802.  lea (a3,d6.w*2),a3
  1803.  
  1804.  move.l a3,LinesPtr
  1805.  
  1806.  moveq #0,d5
  1807.  move.w 8(a0),d5
  1808.  
  1809. ************************************************
  1810. * Just for charles (animate automatically)
  1811. ; add.w #1,d5
  1812. ; cmp.w d6,d5
  1813. ; blt.s okless
  1814. ; moveq #0,d5
  1815. ;okless:
  1816. ; move.w d5,8(a0)
  1817. ************************************************ 
  1818.  
  1819.  move.l POINTER_TO_POINTERS,a4
  1820.  move.w (a4,d5.w*2),d5
  1821.  add.l START_OF_OBJ,d5
  1822.  move.l d5,PtsPtr
  1823.  move.l d5,a3
  1824.  move.w num_points,d5
  1825.  subq #1,d5
  1826.  
  1827.  move.l #boxrot,a4
  1828.  
  1829.  move.w ObjAng,d2
  1830.  sub.w #2048,d2
  1831.  sub.w angpos,d2
  1832.  and.w #8191,d2
  1833.  move.l #SineTable,a2
  1834.  lea (a2,d2.w),a5
  1835.  move.l #boxbrights,a6
  1836.      
  1837.  move.w (a5),d6
  1838.  move.w 2048(a5),d7
  1839.          
  1840. rotobj:
  1841.  move.w (a3),d2    ; xpt
  1842.  move.w 2(a3),d3    ; ypt
  1843.  move.w 4(a3),d4    ; zpt
  1844.  
  1845. ; add.w d2,d2
  1846. ; add.w d3,d3
  1847. ; add.w d4,d4
  1848.  
  1849. ; first rotate around z axis.
  1850.  
  1851. ; move.w d2,d6
  1852. ; move.w d3,d7
  1853. ; muls 2048(a2),d3
  1854. ; muls (a2),d2
  1855. ; sub.l d3,d2    ; newx
  1856. ; muls (a2),d7
  1857. ; muls 2048(a2),d6
  1858. ; add.l d7,d6    ; newy
  1859. ; add.l d6,d6
  1860. ; swap d6
  1861. ; add.l d2,d2
  1862. ; swap d2
  1863. ; move.w d6,d3    ; newy
  1864.  
  1865.  muls d7,d4
  1866.  muls d6,d2
  1867.  sub.l d4,d2
  1868.  asr.l #8,d2
  1869.  move.l d2,(a4)+
  1870.  ext.l d3
  1871.  asl.l #7,d3
  1872.  move.l d3,(a4)+
  1873.  move.w (a3),d2
  1874.  move.w 4(a3),d4
  1875.  muls d6,d4
  1876.  muls d7,d2
  1877.  add.l d2,d4
  1878.  add.l d4,d4
  1879.  swap d4
  1880.  move.w d4,(a4)+
  1881.  
  1882.  add.w #20,d4
  1883.  asr.w #1,d4
  1884.  move.w d4,(a6)+
  1885.  
  1886.  addq #6,a3
  1887.  dbra d5,rotobj 
  1888.  
  1889.  move.l 4(a1,d0.w*8),d0    ; xpos of mid
  1890.  
  1891.  move.w num_points,d7
  1892.  move.l #boxrot,a2
  1893.  move.l #boxonscr,a3
  1894.  move.l #boxbrights,a6
  1895.  move.w 2(a0),d2
  1896.  subq #1,d7
  1897.  
  1898.  ext.l d2
  1899.  asl.l #7,d2
  1900.  sub.l yoff,d2
  1901. convtoscr
  1902.  move.l (a2),d3
  1903.  add.l d0,d3
  1904.  move.l d3,(a2)+
  1905.  move.l (a2),d4
  1906.  add.l d2,d4
  1907.  move.l d4,(a2)+
  1908.  move.w (a2),d5
  1909.  add.w d1,d5
  1910.  ble polybehind
  1911.  move.w d5,(a2)+
  1912.  
  1913.  divs d5,d3
  1914.  divs d5,d4
  1915.  add.w MIDDLEX,d3
  1916.  add.w MIDDLEY,d4
  1917.  move.w d3,(a3)+
  1918.  move.w d4,(a3)+
  1919.  
  1920.  move.w (a6),d3
  1921.  
  1922.  cmp.w #31,d3
  1923.  ble.s okdark
  1924.  move.w #31,d3
  1925. okdark:
  1926.  cmp.w #0,d3
  1927.  bge.s okbr
  1928.  move.w #0,d3
  1929. okbr:
  1930.  move.w d3,(a6)+
  1931.  
  1932.  dbra d7,convtoscr
  1933.  
  1934.  move.l LinesPtr,a1
  1935.  
  1936. ; Now need to sort parts of object
  1937. ; into order.
  1938.  
  1939.  move.l #PartBuffer,a0
  1940.  move.l a0,a2
  1941.  move.w #31,d0
  1942. clrpartbuff:
  1943.  
  1944.  move.w #$8001,(a2)
  1945.  addq #4,a2
  1946.  
  1947.  dbra d0,clrpartbuff
  1948.  
  1949.  move.l #boxrot,a2
  1950.  
  1951.  tst.w SORTIT
  1952.  bne.s PutinParts
  1953.  
  1954. putinunsorted:
  1955.  
  1956.  move.w (a1)+,d7
  1957.  
  1958.  blt doneallparts
  1959.  move.w (a1)+,d6
  1960.  move.l #0,(a0)+
  1961.  move.w d7,(a0)
  1962.  addq #4,a0
  1963.  
  1964.  bra putinunsorted
  1965.  
  1966.  
  1967. PutinParts
  1968.  move.w (a1)+,d7
  1969.  blt doneallparts
  1970.  
  1971.  move.w (a1)+,d6
  1972.  move.l (a2,d6.w),d0
  1973.  asr.l #7,d0
  1974.  muls d0,d0
  1975.  move.l 4(a2,d6.w),d2
  1976.  asr.l #7,d2
  1977.  muls d2,d2
  1978.  add.l d2,d0 
  1979.  move.w 8(a2,d6.w),d2
  1980.  muls d2,d2
  1981.  add.l d2,d0
  1982.  move.l #PartBuffer-8,a0
  1983.  
  1984. stillfront
  1985.  addq #8,a0
  1986.  cmp.l (a0),d0
  1987.  blt stillfront
  1988.  move.l #endparttab-8,a5
  1989. domoreshift:
  1990.  move.l -8(a5),(a5)
  1991.  move.l -4(a5),4(a5)
  1992.  subq #8,a5
  1993.  cmp.l a0,a5
  1994.  bgt.s domoreshift
  1995.  
  1996.  move.l d0,(a0)
  1997.  move.w d7,4(a0)
  1998.  
  1999.  bra PutinParts
  2000.  
  2001. doneallparts:
  2002.  
  2003.  move.l #PartBuffer,a0
  2004.  
  2005. Partloop:
  2006.  move.l (a0)+,d7
  2007.  blt nomoreparts
  2008.  
  2009.  moveq #0,d0
  2010.  move.w (a0),d0
  2011.  addq #4,a0
  2012.  add.l START_OF_OBJ,d0
  2013.  move.l d0,a1
  2014.  move.w #0,firstpt
  2015.  
  2016. polyloo:
  2017.  
  2018.  tst.w (a1)
  2019.  blt.s nomorepolys
  2020.  movem.l a0/a1/d7,-(a7)
  2021.  bsr doapoly
  2022.  movem.l (a7)+,a0/a1/d7
  2023.  
  2024.  move.w (a1),d0
  2025.  lea 18(a1,d0.w*4),a1
  2026.  
  2027.  bra.s polyloo
  2028. nomorepolys
  2029.  
  2030.  bra Partloop
  2031.  
  2032. nomoreparts:
  2033.  rts
  2034.  
  2035. firstpt: dc.w 0
  2036.  
  2037. PartBuffer:
  2038.  ds.w 2*32
  2039. endparttab:
  2040.  
  2041. polybright: dc.l 0
  2042.  
  2043. doapoly:
  2044.  
  2045.  move.w #960,Left
  2046.  move.w #-10,Right
  2047.  
  2048.  move.w (a1)+,d7    ; lines to draw 
  2049.  move.w (a1)+,preholes
  2050.  move.w 12(a1,d7.w*4),pregour
  2051.  move.l #boxonscr,a3
  2052.  
  2053.  move.w (a1),d0
  2054.  move.w 4(a1),d1
  2055.  move.w 8(a1),d2
  2056.  move.w 2(a3,d0.w*4),d3
  2057.  move.w 2(a3,d1.w*4),d4
  2058.  move.w 2(a3,d2.w*4),d5
  2059.  move.w (a3,d0.w*4),d0
  2060.  move.w (a3,d1.w*4),d1
  2061.  move.w (a3,d2.w*4),d2
  2062.  
  2063.  sub.w d1,d0    ;x1
  2064.  sub.w d1,d2    ;x2
  2065.  sub.w d4,d3    ;y1
  2066.  sub.w d4,d5    ;y2
  2067.  
  2068.  muls d3,d2
  2069.  muls d5,d0
  2070.  sub.l d0,d2
  2071.  ble polybehind
  2072.  
  2073.  move.l #boxrot,a3
  2074.  move.w (a1),d0
  2075.  move.w d0,d1
  2076.  asl.w #2,d0
  2077.  add.w d1,d0
  2078.  move.w 4(a1),d1
  2079.  move.l d1,d2
  2080.  asl.w #2,d1
  2081.  add.w d2,d1
  2082.  move.w 8(a1),d2
  2083.  move.w d2,d3
  2084.  asl.w #2,d2
  2085.  add.w d3,d2
  2086.  move.l 4(a3,d0.w*2),d3
  2087.  move.l 4(a3,d1.w*2),d4
  2088.  move.l 4(a3,d2.w*2),d5
  2089.  move.l (a3,d0.w*2),d0
  2090.  move.l (a3,d1.w*2),d1
  2091.  move.l (a3,d2.w*2),d2
  2092.  
  2093.  sub.l d1,d0    ;x1
  2094.  sub.l d1,d2    ;x2
  2095.  sub.l d4,d3    ;y1
  2096.  sub.l d4,d5    ;y2
  2097.  
  2098.  asr.l #7,d0
  2099.  asr.l #7,d2
  2100.  asr.l #7,d3
  2101.  asr.l #7,d5
  2102.  
  2103.  muls d3,d2
  2104.  muls d5,d0
  2105.  sub.l d0,d2
  2106.  
  2107.  move.l d2,polybright
  2108.  move.l #boxonscr,a3
  2109.  
  2110.  clr.b drawit
  2111.  
  2112.  tst.b Gouraud(pc)
  2113.  bne.s usegour
  2114.  bsr putinlines
  2115.  bra.s dontusegour
  2116. usegour:
  2117.  bsr putingourlines
  2118. dontusegour:
  2119.  
  2120.  move.w #320,linedir
  2121.  move.l FASTBUFFER,a6
  2122.  
  2123.  tst.b drawit(pc)
  2124.  beq polybehind
  2125.  
  2126.  move.l #PolyTopTab,a4
  2127.  move.w Left(pc),d1
  2128.  move.w Right(pc),d7
  2129.  
  2130.  move.w leftclipb,d3
  2131.  move.w rightclipb,d4
  2132.  cmp.w d3,d7
  2133.  ble polybehind
  2134.  cmp.w d4,d1
  2135.  bge polybehind
  2136.  cmp.w d3,d1
  2137.  bge .notop
  2138.  move.w d3,d1
  2139. .notop
  2140.  cmp.w d4,d7
  2141.  ble .nobot
  2142.  move.w d4,d7
  2143. .nobot
  2144.  
  2145.  add.w d1,d1 
  2146.  lea (a4,d1.w*8),a4
  2147.  asr.w #1,d1
  2148.  sub.w d1,d7
  2149.  ble polybehind
  2150.  move.w d1,a2
  2151. ; move.l #objintocop,a2
  2152. ; lea (a2,d1.w*2),a2
  2153.  moveq #0,d0
  2154.  
  2155.  move.w (a1)+,a0
  2156.  add.l TextureMaps,a0
  2157.  move.l polybright,d1
  2158.  divs (a1)+,d1
  2159.  
  2160.  tst.b Holes
  2161.  bne gotholesin
  2162.  tst.b Gouraud(pc)
  2163.  bne gotlurvelyshading
  2164.  
  2165.  move.l #objscalecols,a1
  2166.  neg.w d1
  2167.  add.w #31,d1
  2168. ; move.w objbright(pc),d0
  2169. ; add.w d0,d1
  2170.  bge.s toobright
  2171.  move.w #0,d1
  2172. toobright:
  2173.  move.w (a1,d1.w*2),d1
  2174.  asl.w #3,d1
  2175.  move.l TexturePal,a1
  2176.  add.w d1,a1
  2177.  
  2178. dopoly:
  2179.  move.w #0,offtopby
  2180.  move.l a6,a3
  2181.  adda.w a2,a3
  2182.  addq #1,a2
  2183.  move.w (a4),d1
  2184.  cmp.w objclipb,d1
  2185.  bge nodl
  2186.  move.w PolyBotTab-PolyTopTab(a4),d2
  2187.  cmp.w objclipt,d2
  2188.  ble nodl
  2189.  cmp.w objclipt,d1
  2190.  bge.s nocl
  2191.  move.w objclipt,d3
  2192.  sub.w d1,d3
  2193.  move.w d3,offtopby
  2194.  move.w objclipt,d1
  2195. nocl: 
  2196.  move.w d2,d0
  2197.  cmp.w objclipb,d2
  2198.  ble.s nocr
  2199.  move.w objclipb,d2
  2200. nocr:
  2201.  
  2202.     ; d1=top end
  2203.     ; d2=bot end
  2204.     
  2205.  move.l 2+PolyBotTab-PolyTopTab(a4),d3
  2206.  move.l 6+PolyBotTab-PolyTopTab(a4),d4
  2207.     
  2208.  move.l 2(a4),d5
  2209.  move.l 6(a4),d6
  2210.  
  2211.  sub.l d5,d3
  2212.  sub.l d6,d4
  2213.  
  2214. ; asl.w #8,d3
  2215. ; asl.w #8,d4
  2216. ; ext.l d3
  2217. ; ext.l d4
  2218.  
  2219.  
  2220. ; and.b #63,d5
  2221. ; and.b #63,d6
  2222. ; lsl.w #8,d6
  2223. ; move.b d5,d6    ; starting pos
  2224. ; moveq.l #0,d5
  2225. ; move.w d6,d5
  2226.  
  2227.  
  2228.  sub.w d1,d2
  2229.  ble nodl
  2230.  
  2231.  move.w #0,tstdca
  2232.  sub.w d1,d0
  2233.  tst.w offtopby
  2234.  beq.s .notofftop
  2235.  move.l d3,-(a7)
  2236.  move.l d4,-(a7)
  2237.  add.w offtopby,d0
  2238.  ext.l d0    
  2239.  muls.l offtopby-2,d3
  2240.  muls.l offtopby-2,d4
  2241.  divs.l d0,d3
  2242.  divs.l d0,d4
  2243.  
  2244.  add.l d3,d5
  2245.  add.l d4,d6
  2246.  
  2247.  move.l (a7)+,d4
  2248.  move.l (a7)+,d3
  2249. .notofftop: 
  2250.  ext.l d0
  2251.  
  2252.  divs.l d0,d3
  2253.  divs.l d0,d4
  2254.  
  2255.  add.l ontoscr(pc,d1.w*4),a3
  2256.  move.l #$3fffff,d1
  2257.  move.l d3,a5
  2258.  moveq #0,d3
  2259.  subq #1,d2
  2260. drawpol:
  2261.  and.l d1,d5
  2262.  and.l d1,d6
  2263.  
  2264.  move.l d6,d0
  2265.  asr.l #8,d0
  2266.  swap d5
  2267.  move.b d5,d0
  2268.  
  2269.  move.b (a0,d0.w*4),d3
  2270.  swap d5
  2271.  add.l a5,d5
  2272.  add.l d4,d6
  2273.  move.b (a1,d3.w*2),(a3)
  2274.  adda.w #320,a3
  2275.  dbra d2,drawpol
  2276.  
  2277. ; add.w a5,d3
  2278. ; addx.l d6,d5
  2279. ; dbcs d2,drawpol2
  2280. ; dbcc d2,drawpol
  2281.  bra.s pastit
  2282. drawpol2:
  2283.  and.w d1,d5
  2284.  move.b (a0,d5.w*4),d0
  2285.  move.w (a1,d0.w*2),(a3)
  2286.  adda.w #320,a3
  2287.  add.w a5,d3
  2288.  addx.l d4,d5
  2289.  dbcs d2,drawpol2
  2290.  dbcc d2,drawpol
  2291.  
  2292. pastit:
  2293.  
  2294. nodl:
  2295.  adda.w #16,a4
  2296.  dbra d7,dopoly
  2297.  
  2298.  rts
  2299.  
  2300. ontoscr:
  2301. val SET 0
  2302.  REPT 256
  2303.  dc.l val
  2304. val SET val+320
  2305.  ENDR
  2306.  
  2307. tstdca: dc.l 0
  2308.  dc.w 0
  2309. offtopby: dc.w 0
  2310. LinesPtr: dc.l 0
  2311. PtsPtr: dc.l 0
  2312.  
  2313. gotlurvelyshading:
  2314.  move.l TexturePal,a1
  2315. ; neg.w d1
  2316. ; add.w #14,d1
  2317. ; bge.s toobrightg
  2318. ; move.w #0,d1
  2319. ;toobrightg:
  2320. ; asl.w #8,d1
  2321. ; lea (a1,d1.w*2),a1
  2322.  
  2323. dopolyg:
  2324.  move.l a6,a3
  2325.  move.w #0,offtopby
  2326.  adda.w a2,a3
  2327.  addq #1,a2
  2328.  move.w (a4),d1
  2329.  cmp.w objclipb,d1
  2330.  bge nodlg
  2331.  moveq #0,d2
  2332.  move.w PolyBotTab-PolyTopTab(a4),d2
  2333.  cmp.w objclipt(pc),d2
  2334.  ble nodlg
  2335.  cmp.w objclipt(pc),d1
  2336.  bge.s noclg
  2337.  move.w objclipt,d3
  2338.  sub.w d1,d3
  2339.  move.w d3,offtopby
  2340.  move.w objclipt(pc),d1
  2341. noclg: 
  2342.  move.w d2,d0
  2343.  cmp.w objclipb(pc),d2
  2344.  ble.s nocrg
  2345.  move.w objclipb(pc),d2
  2346. nocrg:
  2347.  
  2348.     ; d1=top end
  2349.     ; d2=bot end
  2350.     
  2351.  move.w 2+PolyBotTab-PolyTopTab(a4),d3
  2352.  move.w 4+PolyBotTab-PolyTopTab(a4),d4
  2353.     
  2354.  moveq #0,d5
  2355.  move.w 2(a4),d5
  2356.  move.w 4(a4),d6
  2357.  
  2358.  sub.w d5,d3
  2359.  sub.w d6,d4
  2360.  
  2361.  asl.w #8,d3
  2362.  asl.w #8,d4
  2363.  ext.l d3
  2364.  ext.l d4
  2365.  
  2366.  and.b #63,d5
  2367.  and.b #63,d6
  2368.  lsl.w #8,d6
  2369.  move.b d5,d6    ; starting pos
  2370.  moveq.l #0,d5
  2371.  move.w d6,d5
  2372.  
  2373.  sub.w d1,d2
  2374.  ble nodlg
  2375.  
  2376.  move.w #0,tstdca
  2377.  sub.w d1,d0
  2378.  tst.w offtopby
  2379.  beq.s .notofftop
  2380.  move.l d3,-(a7)
  2381.  move.l d4,-(a7)
  2382.  add.w offtopby,d0
  2383.  
  2384.  muls offtopby,d3
  2385.  muls offtopby,d4
  2386.  divs d0,d3
  2387.  divs d0,d4
  2388.  asl.l #8,d3
  2389.  asl.l #8,d4
  2390.  move.w d3,tstdca
  2391.  swap d3
  2392.  swap d4
  2393.  and.w #63,d3
  2394.  and.w #63,d4
  2395.  asl.w #8,d4
  2396.  move.b d3,d4
  2397.  add.l d4,d5
  2398.  move.l (a7)+,d4
  2399.  move.l (a7)+,d3
  2400. .notofftop
  2401.  
  2402.  divs d0,d3
  2403.  divs d0,d4
  2404.  ext.l d3
  2405.  ext.l d4
  2406.  asl.l #8,d3
  2407.  asl.l #8,d4
  2408.  
  2409.  add.l ontoscrg(pc,d1.w*4),a3
  2410.  move.w 6+PolyBotTab-PolyTopTab(a4),d1
  2411.  move.w 6(a4),d6
  2412.  sub.w d6,d1
  2413.  swap d1
  2414.  clr.w d1
  2415.  asr.l #8,d1
  2416.  divs d0,d1
  2417.  asl.l #8,d1
  2418.  swap d1
  2419.  asl.w #8,d1
  2420.  
  2421.  move.w d3,d0
  2422.  swap d0
  2423.  move.w d1,d0
  2424.  move.w d2,d1
  2425.  move.l d1,d2
  2426.  move.l d0,a5
  2427.  move.w tstdca,d0
  2428.  swap d0
  2429.  move.w d6,d0
  2430.  asl.w #8,d0
  2431.  swap d3
  2432.  swap d4
  2433.  asl.w #8,d4
  2434.  move.b d3,d4
  2435.  move.l d4,d6
  2436.  add.w #256,d6
  2437.  
  2438.  moveq #0,d1
  2439.  move.w #63*256+63,d1
  2440.  and.w d1,d4
  2441.  and.w d1,d6
  2442.  dbra d2,drawpolg
  2443.  
  2444. ontoscrg:
  2445. val SET 0
  2446.  REPT 256
  2447.  dc.l val
  2448. val SET val+320
  2449.  ENDR
  2450.  
  2451. drawpolg: 
  2452.  and.w #63*256+63,d5
  2453.  move.b (a0,d5.w*4),d0
  2454.  move.b (a1,d0.w*2),(a3)
  2455.  adda.w #320,a3
  2456.  add.l d2,d1
  2457.  bcc.s nonewb
  2458.  add.w #256,d0
  2459. nonewb:
  2460.  add.l a5,d0
  2461.  addx.l d6,d5
  2462.  dbcs d2,drawpol2g
  2463.  dbcc d2,drawpolg
  2464.  bra.s pastitg
  2465. drawpol2g:
  2466.  and.w #63*256+63,d5
  2467.  move.b (a0,d5.w*4),d0
  2468.  move.b (a1,d0.w*2),(a3)
  2469.  adda.w #320,a3
  2470.  add.l d2,d1
  2471.  bcc.s nonewb2
  2472.  add.w #256,d0
  2473. nonewb2:
  2474.  add.l a5,d0
  2475.  addx.l d4,d5
  2476.  dbcs d2,drawpol2g
  2477.  dbcc d2,drawpolg
  2478.  
  2479. pastitg:
  2480.  
  2481. nodlg:
  2482.  add.w #16,a4
  2483.  dbra d7,dopolyg
  2484.  
  2485.  rts
  2486.  
  2487.  
  2488.  
  2489. gotholesin:
  2490.  move.l #objscalecols,a1
  2491.  neg.w d1
  2492.  add.w #14,d1
  2493.  move.w objbright(pc),d0
  2494.  add.w d0,d1
  2495.  bge.s toobrighth
  2496.  move.w #0,d1
  2497. toobrighth:
  2498.  move.w (a1,d1.w*2),d1
  2499.  asl.w #3,d1
  2500.  move.l TexturePal,a1
  2501.  add.w d1,a1
  2502.  
  2503. dopolyh:
  2504.  move.w #0,offtopby
  2505.  move.l a6,a3
  2506.  adda.w a2,a3
  2507.  addq #1,a2
  2508.  move.w (a4),d1
  2509.  cmp.w objclipb,d1
  2510.  bge nodlh
  2511.  move.w PolyBotTab-PolyTopTab(a4),d2
  2512.  cmp.w objclipt,d2
  2513.  ble nodlh
  2514.  cmp.w objclipt,d1
  2515.  bge.s noclh
  2516.  move.w objclipt,d3
  2517.  sub.w d1,d3
  2518.  move.w d3,offtopby
  2519.  move.w objclipt,d1
  2520. noclh: 
  2521.  move.w d2,d0
  2522.  cmp.w objclipb,d2
  2523.  ble.s nocrh
  2524.  move.w objclipb,d2
  2525. nocrh:
  2526.  
  2527.     ; d1=top end
  2528.     ; d2=bot end
  2529.     
  2530.  move.l 2+PolyBotTab-PolyTopTab(a4),d3
  2531.  move.l 6+PolyBotTab-PolyTopTab(a4),d4
  2532.     
  2533.  move.l 2(a4),d5
  2534.  move.l 6(a4),d6
  2535.  
  2536.  sub.l d5,d3
  2537.  sub.l d6,d4
  2538.  
  2539. ; asl.w #8,d3
  2540. ; asl.w #8,d4
  2541. ; ext.l d3
  2542. ; ext.l d4
  2543.  
  2544. ; and.b #63,d5
  2545. ; and.b #63,d6
  2546. ; lsl.w #8,d6
  2547. ; move.b d5,d6    ; starting pos
  2548. ; moveq #-1,d5
  2549. ; lsr.l #1,d5
  2550. ; move.w d6,d5
  2551.  
  2552.  
  2553.  sub.w d1,d2
  2554.  ble nodlh
  2555.  
  2556.  move.w #0,tstdca
  2557.  sub.w d1,d0
  2558.  tst.w offtopby
  2559.  beq.s .notofftop
  2560.  move.l d3,-(a7)
  2561.  move.l d4,-(a7)
  2562.  add.w offtopby,d0
  2563.  ext.l d0
  2564.  muls.l offtopby-2,d3
  2565.  muls.l offtopby-2,d4
  2566.  divs.l d0,d3
  2567.  divs.l d0,d4
  2568.  
  2569.  add.l d3,d5
  2570.  add.l d4,d6
  2571.  
  2572.  move.l (a7)+,d4
  2573.  move.l (a7)+,d3
  2574. .notofftop:
  2575.  ext.l d0
  2576.  
  2577.  divs.l d0,d3
  2578.  divs.l d0,d4
  2579.  
  2580.  add.l ontoscrh(pc,d1.w*4),a3
  2581.  move.l #$3fffff,d1
  2582.  move.l d3,a5
  2583.  moveq #0,d3
  2584.  subq #1,d2
  2585. drawpolh:
  2586.  and.l d1,d5
  2587.  and.l d1,d6
  2588.  
  2589.  move.l d6,d0
  2590.  asr.l #8,d0
  2591.  swap d5
  2592.  move.b d5,d0
  2593.  
  2594.  swap d5
  2595.  add.l a5,d5
  2596.  add.l d4,d6
  2597.  move.b (a0,d0.w*4),d3
  2598.  beq.s .dontplot
  2599.  move.b (a1,d3.w*2),(a3)
  2600. .dontplot
  2601.  adda.w #320,a3
  2602.  dbra d2,drawpolh
  2603.  
  2604. pastith:
  2605.  
  2606. nodlh:
  2607.  adda.w #16,a4
  2608.  dbra d7,dopolyh
  2609.  
  2610.  rts
  2611.  
  2612. ontoscrh:
  2613. val SET 0
  2614.  REPT 256
  2615.  dc.l val
  2616. val SET val+320
  2617.  ENDR
  2618.  
  2619.  EVEN
  2620. pregour:
  2621.  dc.b 0
  2622. Gouraud:
  2623.  dc.b 0
  2624. preholes:
  2625.  dc.b 0
  2626. Holes: 
  2627.  dc.b 0
  2628.  
  2629. putinlines:
  2630.  
  2631.  move.w (a1),d0
  2632.  move.w 4(a1),d1
  2633.  
  2634.  move.w (a3,d0.w*4),d2
  2635.  move.w 2(a3,d0.w*4),d3
  2636.  move.w (a3,d1.w*4),d4
  2637.  move.w 2(a3,d1.w*4),d5
  2638.  
  2639. ; d2=x1 d3=y1 d4=x2 d5=y2
  2640.  
  2641.  cmp.w d2,d4
  2642.  beq thislineflat
  2643.  bgt thislineontop
  2644.  move.l #PolyBotTab,a4
  2645.  exg d2,d4
  2646.  exg d3,d5
  2647.  
  2648.  cmp.w rightclipb,d2
  2649.  bge thislineflat
  2650.  cmp.w leftclipb,d4
  2651.  ble thislineflat
  2652.  move.w rightclipb,d6
  2653.  sub.w d4,d6
  2654.  ble.s .clipr
  2655.  move.w #0,-(a7)
  2656.  cmp.w Right(pc),d4
  2657.  ble.s .nonewbot
  2658.  move.w d4,Right
  2659.  bra.s .nonewbot
  2660.  
  2661. .clipr
  2662.  move.w d6,-(a7)
  2663.  move.w rightclipb,Right
  2664.  sub.w #1,Right
  2665. .nonewbot:
  2666.  
  2667.  move.w #0,offleftby
  2668.  move.w d2,d6
  2669.  cmp.w leftclipb,d6
  2670.  bge .okt
  2671.  move.w leftclipb,d6
  2672.  sub.w d2,d6
  2673.  move.w d6,offleftby
  2674.  add.w d2,d6
  2675. .okt:
  2676.  
  2677.  st drawit
  2678.  add.w d6,d6
  2679.  lea (a4,d6.w*8),a4
  2680.  asr.w #1,d6
  2681.  cmp.w Left(pc),d6
  2682.  bge.s .nonewtop
  2683.  move.w d6,Left
  2684. .nonewtop
  2685.  
  2686.  sub.w d3,d5    ; dy
  2687.  swap d3
  2688.  clr.w d3    ; d2=xpos
  2689.  sub.w d2,d4    ; dx > 0
  2690.  ext.l d4
  2691.  swap d5
  2692.  clr.w d5
  2693. ; asr.l #8,d5
  2694.  divs.l d4,d5
  2695. ; asl.l #8,d5    ; dx constant
  2696.  moveq #0,d2
  2697.  move.b 2(a1),d2
  2698.  moveq #0,d6
  2699.  move.b 6(a1),d6
  2700.  sub.w d6,d2
  2701.  swap d2
  2702.  swap d6
  2703.  clr.w d2
  2704.  clr.w d6    ; d6=xbitpos
  2705. ; asr.l #8,d2
  2706.  divs.l d4,d2
  2707. ; ext.l d2
  2708. ; asl.l #8,d2    ; d3=xbitconst
  2709.  move.l d5,a5    ; a5=dy constant
  2710.  move.l d2,a6    ; a6=xbitconst
  2711.  
  2712.  moveq #0,d5
  2713.  move.b 3(a1),d5
  2714.  moveq #0,d2
  2715.  move.b 7(a1),d2
  2716.  sub.w d2,d5
  2717.  swap d2
  2718.  swap d5
  2719.  clr.w d2    ; d3=ybitpos
  2720.  clr.w d5
  2721. ; asr.l #8,d5
  2722.  divs.l d4,d5
  2723. ; ext.l d5
  2724. ; asl.l #8,d5    ; d4=ybitconst
  2725.  
  2726.  
  2727.  add.w (a7)+,d4
  2728.  sub.w offleftby(pc),d4
  2729.  blt thislineflat
  2730.  
  2731.  tst.w offleftby(pc)
  2732.  beq.s .noneoffleft
  2733.  move.w d4,-(a7)
  2734.  move.w offleftby(pc),d4
  2735.  dbra d4,.calcnodraw
  2736.  bra .nodrawoffleft
  2737. .calcnodraw
  2738.  add.l a5,d3
  2739.  add.l a6,d6
  2740.  add.l d5,d2
  2741.  dbra d4,.calcnodraw
  2742. .nodrawoffleft:
  2743.  move.w (a7)+,d4
  2744. .noneoffleft:
  2745.  
  2746. .putinline:
  2747.  
  2748.  swap d3
  2749.  move.w d3,(a4)+
  2750.  swap d3
  2751.  move.l d6,(a4)+
  2752.  move.l d2,(a4)+
  2753.  addq #6,a4
  2754.  
  2755.  add.l a5,d3
  2756.  add.l a6,d6
  2757.  add.l d5,d2
  2758.  
  2759.  dbra d4,.putinline
  2760.  
  2761.  bra thislineflat
  2762.  
  2763. thislineontop:
  2764.  move.l #PolyTopTab,a4
  2765.  
  2766.  cmp.w rightclipb,d2
  2767.  bge thislineflat
  2768.  cmp.w leftclipb,d4
  2769.  ble thislineflat
  2770.  move.w rightclipb,d6
  2771.  sub.w d4,d6
  2772.  ble.s .clipr
  2773.  move.w #0,-(a7)
  2774.  cmp.w Right(pc),d4
  2775.  ble.s .nonewbot
  2776.  move.w d4,Right
  2777.  bra.s .nonewbot
  2778.  
  2779. .clipr
  2780.  move.w d6,-(a7)
  2781.  move.w rightclipb,Right
  2782.  sub.w #1,Right
  2783. .nonewbot:
  2784.  
  2785.  move.w #0,offleftby
  2786.  move.w d2,d6
  2787.  cmp.w leftclipb,d6
  2788.  bge .okt
  2789.  move.w leftclipb,d6
  2790.  sub.w d2,d6
  2791.  move.w d6,offleftby
  2792.  add.w d2,d6
  2793. .okt:
  2794.  
  2795.  st drawit
  2796.  add.w d6,d6
  2797.  lea (a4,d6.w*8),a4
  2798.  asr.w #1,d6
  2799.  cmp.w Left(pc),d6
  2800.  bge.s .nonewtop
  2801.  move.w d6,Left
  2802. .nonewtop
  2803.  
  2804.  sub.w d3,d5    ; dy
  2805.  swap d3
  2806.  clr.w d3    ; d2=xpos
  2807.  sub.w d2,d4    ; dx > 0
  2808.  ext.l d4
  2809.  swap d5
  2810.  clr.w d5
  2811. ; asr.l #8,d5
  2812.  divs.l d4,d5
  2813. ; ext.l d5
  2814. ; asl.l #8,d5    ; dx constant
  2815.  moveq #0,d2
  2816.  move.b 6(a1),d2
  2817.  moveq #0,d6
  2818.  move.b 2(a1),d6
  2819.  sub.w d6,d2
  2820.  swap d2
  2821.  swap d6
  2822.  clr.w d2
  2823.  clr.w d6    ; d6=xbitpos
  2824. ; asr.l #8,d2
  2825.  divs.l d4,d2
  2826. ; ext.l d2
  2827. ; asl.l #8,d2    ; d3=xbitconst
  2828.  move.l d5,a5    ; a5=dy constant
  2829.  move.l d2,a6    ; a6=xbitconst
  2830.  
  2831.  moveq #0,d5
  2832.  move.b 7(a1),d5
  2833.  moveq #0,d2
  2834.  move.b 3(a1),d2
  2835.  sub.w d2,d5
  2836.  swap d2
  2837.  swap d5
  2838.  clr.w d2    ; d3=ybitpos
  2839.  clr.w d5
  2840. ; asr.l #8,d5
  2841.  divs.l d4,d5
  2842. ; ext.l d5
  2843. ; asl.l #8,d5    ; d4=ybitconst
  2844.  
  2845.  add.w (a7)+,d4
  2846.  sub.w offleftby(pc),d4
  2847.  blt.s thislineflat
  2848.  
  2849.  tst.w offleftby(pc)
  2850.  beq.s .noneoffleft
  2851.  move.w d4,-(a7)
  2852.  move.w offleftby(pc),d4
  2853.  dbra d4,.calcnodraw
  2854.  bra .nodrawoffleft
  2855. .calcnodraw
  2856.  add.l a5,d3
  2857.  add.l a6,d6
  2858.  add.l d5,d2
  2859.  dbra d4,.calcnodraw
  2860. .nodrawoffleft:
  2861.  move.w (a7)+,d4
  2862. .noneoffleft:
  2863.  
  2864.  
  2865. .putinline:
  2866.  
  2867.  swap d3
  2868.  move.w d3,(a4)+
  2869.  swap d3
  2870.  move.l d6,(a4)+
  2871.  move.l d2,(a4)+
  2872.  addq #6,a4
  2873.  
  2874.  add.l a5,d3
  2875.  add.l a6,d6
  2876.  add.l d5,d2
  2877.  
  2878.  dbra d4,.putinline
  2879.  
  2880. thislineflat:
  2881.  addq #4,a1
  2882.  dbra d7,putinlines
  2883.  addq #4,a1
  2884.  rts
  2885.  
  2886. putingourlines:
  2887.  
  2888.  move.l #boxbrights,a2
  2889.  move.w firstpt,d0
  2890.  lea (a2,d0.w*2),a2
  2891.  
  2892. piglloop:
  2893.  
  2894.  move.w (a1),d0
  2895.  move.w 4(a1),d1
  2896.  
  2897.  move.w (a3,d0.w*4),d2
  2898.  move.w 2(a3,d0.w*4),d3
  2899.  move.w (a3,d1.w*4),d4
  2900.  move.w 2(a3,d1.w*4),d5
  2901.  
  2902.  cmp.w d2,d4
  2903.  beq thislineflatgour
  2904.  bgt thislineontopgour
  2905.  move.l #PolyBotTab,a4
  2906.  exg d2,d4
  2907.  exg d3,d5
  2908.  
  2909.  cmp.w rightclipb,d2
  2910.  bge thislineflatgour
  2911.  cmp.w leftclipb,d4
  2912.  ble thislineflatgour
  2913.  move.w rightclipb,d6
  2914.  sub.w d4,d6
  2915.  ble.s .clipr
  2916.  move.w #0,-(a7)
  2917.  cmp.w Right(pc),d4
  2918.  ble.s .nonewbot
  2919.  move.w d4,Right
  2920.  bra.s .nonewbot
  2921.  
  2922. .clipr
  2923.  move.w d6,-(a7)
  2924.  move.w rightclipb,Right
  2925.  sub.w #1,Right
  2926. .nonewbot:
  2927.  
  2928.  move.w #0,offleftby
  2929.  move.w d2,d6
  2930.  cmp.w leftclipb,d6
  2931.  bge .okt
  2932.  move.w leftclipb,d6
  2933.  sub.w d2,d6
  2934.  move.w d6,offleftby
  2935.  add.w d2,d6
  2936. .okt:
  2937.  
  2938.  
  2939.  st drawit
  2940.  lea (a4,d6.w*8),a4
  2941.  cmp.w Left(pc),d6
  2942.  bge.s .nonewtop
  2943.  move.w d6,Left
  2944. .nonewtop
  2945.  
  2946.  sub.w d3,d5    ; dy
  2947.  swap d3
  2948.  clr.w d3    ; d2=xpos
  2949.  sub.w d2,d4    ; dx > 0
  2950.  swap d5
  2951.  clr.w d5
  2952.  asr.l #8,d5
  2953.  divs d4,d5
  2954.  ext.l d5
  2955.  asl.l #8,d5    ; dx constant
  2956.  moveq #0,d2
  2957.  move.b 2(a1),d2
  2958.  moveq #0,d6
  2959.  move.b 6(a1),d6
  2960.  sub.w d6,d2
  2961.  swap d2
  2962.  swap d6
  2963.  clr.w d2
  2964.  clr.w d6    ; d6=xbitpos
  2965.  asr.l #8,d2
  2966.  divs d4,d2
  2967.  ext.l d2
  2968.  asl.l #8,d2    ; d3=xbitconst
  2969.  move.l d5,a5    ; a5=dy constant
  2970.  move.l d2,a6    ; a6=xbitconst
  2971.  
  2972.  moveq #0,d5
  2973.  move.b 3(a1),d5
  2974.  moveq #0,d2
  2975.  move.b 7(a1),d2
  2976.  sub.w d2,d5
  2977.  swap d2
  2978.  swap d5
  2979.  clr.w d2    ; d3=ybitpos
  2980.  clr.w d5
  2981.  asr.l #8,d5
  2982.  divs d4,d5
  2983.  ext.l d5
  2984.  asl.l #8,d5    ; d4=ybitconst
  2985.  
  2986.  move.w (a2,d1.w*2),d1
  2987.  move.w (a2,d0.w*2),d0
  2988.  sub.w d1,d0
  2989.  swap d0
  2990.  swap d1
  2991.  clr.w d0
  2992.  clr.w d1
  2993.  asr.l #8,d0
  2994.  divs d4,d0
  2995.  ext.l d0
  2996.  asl.l #8,d0
  2997.  
  2998.  add.w (a7)+,d4
  2999.  sub.w offleftby(pc),d4
  3000.  blt thislineflatgour
  3001.  
  3002.  tst.w offleftby(pc)
  3003.  beq.s .noneoffleft
  3004.  move.w d4,-(a7)
  3005.  move.w offleftby(pc),d4
  3006.  dbra d4,.calcnodraw
  3007.  bra .nodrawoffleft
  3008. .calcnodraw
  3009.  add.l d0,d1
  3010.  add.l a5,d3
  3011.  add.l a6,d6
  3012.  add.l d5,d2
  3013.  dbra d4,.calcnodraw
  3014. .nodrawoffleft:
  3015.  move.w (a7)+,d4
  3016. .noneoffleft:
  3017.  
  3018. .putinline:
  3019.  
  3020.  swap d3
  3021.  move.w d3,(a4)+
  3022.  swap d3
  3023.  swap d6
  3024.  move.w d6,(a4)+
  3025.  swap d6
  3026.  swap d2
  3027.  move.w d2,(a4)+
  3028.  swap d2
  3029.  swap d1
  3030.  move.w d1,(a4)+
  3031.  swap d1
  3032.  
  3033.  add.l d0,d1
  3034.  add.l a5,d3
  3035.  add.l a6,d6
  3036.  add.l d5,d2
  3037.  
  3038.  dbra d4,.putinline
  3039.  
  3040.  bra thislineflatgour
  3041.  
  3042. thislineontopgour:
  3043.  move.l #PolyTopTab,a4
  3044.  
  3045.  cmp.w rightclipb,d2
  3046.  bge thislineflatgour
  3047.  cmp.w leftclipb,d4
  3048.  ble thislineflatgour
  3049.  move.w rightclipb,d6
  3050.  sub.w d4,d6
  3051.  ble.s .clipr
  3052.  move.w #0,-(a7)
  3053.  cmp.w Right(pc),d4
  3054.  ble.s .nonewbot
  3055.  move.w d4,Right
  3056.  bra.s .nonewbot
  3057.  
  3058. .clipr
  3059.  move.w d6,-(a7)
  3060.  move.w rightclipb,Right
  3061.  sub.w #1,Right
  3062. .nonewbot:
  3063.  
  3064.  move.w #0,offleftby
  3065.  move.w d2,d6
  3066.  cmp.w leftclipb,d6
  3067.  bge .okt
  3068.  move.w leftclipb,d6
  3069.  sub.w d2,d6
  3070.  move.w d6,offleftby
  3071.  add.w d2,d6
  3072. .okt:
  3073.  
  3074.  st drawit
  3075.  lea (a4,d6.w*8),a4
  3076.  cmp.w Left(pc),d6
  3077.  bge.s .nonewtop
  3078.  move.w d6,Left
  3079. .nonewtop
  3080.  
  3081.  sub.w d3,d5    ; dy
  3082.  swap d3
  3083.  clr.w d3    ; d2=xpos
  3084.  sub.w d2,d4    ; dx > 0
  3085.  swap d5
  3086.  clr.w d5
  3087.  asr.l #8,d5
  3088.  divs d4,d5
  3089.  ext.l d5
  3090.  asl.l #8,d5    ; dx constant
  3091.  moveq #0,d2
  3092.  move.b 6(a1),d2
  3093.  moveq #0,d6
  3094.  move.b 2(a1),d6
  3095.  sub.w d6,d2
  3096.  swap d2
  3097.  swap d6
  3098.  clr.w d2
  3099.  clr.w d6    ; d6=xbitpos
  3100.  asr.l #8,d2
  3101.  divs d4,d2
  3102.  ext.l d2
  3103.  asl.l #8,d2    ; d3=xbitconst
  3104.  move.l d5,a5    ; a5=dy constant
  3105.  move.l d2,a6    ; a6=xbitconst
  3106.  
  3107.  moveq #0,d5
  3108.  move.b 7(a1),d5
  3109.  moveq #0,d2
  3110.  move.b 3(a1),d2
  3111.  sub.w d2,d5
  3112.  swap d2
  3113.  swap d5
  3114.  clr.w d2    ; d3=ybitpos
  3115.  clr.w d5
  3116.  asr.l #8,d5
  3117.  divs d4,d5
  3118.  ext.l d5
  3119.  asl.l #8,d5    ; d4=ybitconst
  3120.  
  3121.  move.w (a2,d1.w*2),d1
  3122.  move.w (a2,d0.w*2),d0
  3123.  sub.w d0,d1
  3124.  swap d0
  3125.  swap d1
  3126.  clr.w d0
  3127.  clr.w d1
  3128.  asr.l #8,d1
  3129.  divs d4,d1
  3130.  ext.l d1
  3131.  asl.l #8,d1
  3132.  
  3133.  add.w (a7)+,d4
  3134.  sub.w offleftby(pc),d4
  3135.  blt.s thislineflatgour
  3136.  
  3137.  tst.w offleftby(pc)
  3138.  beq.s .noneoffleft
  3139.  move.w d4,-(a7)
  3140.  move.w offleftby(pc),d4
  3141.  dbra d4,.calcnodraw
  3142.  bra .nodrawoffleft
  3143. .calcnodraw
  3144.  add.l d1,d0
  3145.  add.l a5,d3
  3146.  add.l a6,d6
  3147.  add.l d5,d2
  3148.  dbra d4,.calcnodraw
  3149. .nodrawoffleft:
  3150.  move.w (a7)+,d4
  3151. .noneoffleft:
  3152.  
  3153.  
  3154. .putinline:
  3155.  
  3156.  swap d3
  3157.  move.w d3,(a4)+
  3158.  swap d3
  3159.  swap d6
  3160.  move.w d6,(a4)+
  3161.  swap d6
  3162.  swap d2
  3163.  move.w d2,(a4)+
  3164.  swap d2
  3165.  swap d0
  3166.  move.w d0,(a4)+
  3167.  swap d0
  3168.  
  3169.  add.l d1,d0
  3170.  add.l a5,d3
  3171.  add.l a6,d6
  3172.  add.l d5,d2
  3173.  
  3174.  dbra d4,.putinline
  3175.  
  3176. thislineflatgour:
  3177.  addq #4,a1
  3178.  dbra d7,piglloop
  3179.  addq #4,a1
  3180.  rts
  3181.  
  3182. offleftby: dc.w 0
  3183. Left: dc.w 0
  3184. Right: dc.w 0
  3185.  
  3186. POINTER_TO_POINTERS: dc.l 0
  3187. START_OF_OBJ: dc.l 0
  3188. num_points: dc.w 0
  3189.  
  3190. POLYOBJECTS:
  3191.  ds.l 40
  3192. ; dc.l Spider_des
  3193. ; dc.l Medi_des
  3194. ; dc.l Exit_des
  3195. ; dc.l Crate_des
  3196. ; dc.l Terminal_des
  3197. ; dc.l Blue_des
  3198. ; dc.l Green_des
  3199. ; dc.l Red_des
  3200. ; dc.l Yellow_des
  3201. ; dc.l Gas_des
  3202. ; dc.l Torch_des
  3203.  
  3204. Spider_des:
  3205. ; incbin "ab3:vectobj/robot"
  3206.  incbin "ab3:vectobj/walllamp"
  3207.  
  3208. ;Medi_des:
  3209. ; incbin "ab3:vectobj/testgrill"
  3210. ;Exit_des:
  3211. ; incbin "ab3:vectobj/exitsign
  3212. ;Crate_des:
  3213. ; incbin "ab3:vectobj/droid"
  3214. ;Terminal_des:
  3215. ; incbin "ab3:includes/terminal.vec"
  3216. ;Blue_des:
  3217. ; incbin "ab3:vectobj/blueind"
  3218. ;Green_des:
  3219. ; incbin "ab3:vectobj/Greenind"
  3220. ;Red_des:
  3221. ; incbin "ab3:vectobj/Redind"
  3222. ;Yellow_des:
  3223. ; incbin "ab3:vectobj/yellowind"
  3224. ;Gas_des:
  3225. ; incbin "ab3:vectobj/gaspipe"
  3226. ;Torch_des:
  3227. ; incbin "ab3:vectobj/torch"
  3228.  
  3229. boxonscr:
  3230.  ds.l 250*2
  3231. boxrot: ds.l 3*250
  3232.  
  3233. boxbrights: 
  3234.     dc.w 0
  3235.     dc.w 12
  3236.     dc.w 12
  3237.     dc.w 12
  3238.  dc.w 12
  3239.     dc.w 0
  3240.     ds.w 50
  3241.  
  3242. boxang: dc.w 0 
  3243.  
  3244.  ds.w 320*4
  3245. PolyBotTab: ds.w 320*8
  3246.  ds.w 320*4
  3247. PolyTopTab: ds.w 320*8
  3248.  ds.w 320*4
  3249.  
  3250. offset:
  3251.  dc.w 0
  3252. timer:
  3253.  dc.w 0
  3254.  
  3255. Objects:
  3256. ; Lookup table for OBJECT GRAPHIC TYPE
  3257. ; in object data (offset 8)
  3258. ;0
  3259.  dc.l ALIEN_WAD,ALIEN_PTR,ALIEN_FRAMES,ALIEN_PAL
  3260. ;1
  3261.  dc.l PICKUPS_WAD,PICKUPS_PTR,PICKUPS_FRAMES,PICKUPS_PAL
  3262. ;2
  3263.  dc.l BIGBULLET_WAD,BIGBULLET_PTR,BIGBULLET_FRAMES,BIGBULLET_PAL
  3264. ;3
  3265.  dc.l UGLYMONSTER_WAD,UGLYMONSTER_PTR,UGLYMONSTER_FRAMES,UGLYMONSTER_PAL
  3266. ;4
  3267.  dc.l FLYINGMONSTER_WAD,FLYINGMONSTER_PTR,FLYINGMONSTER_FRAMES,FLYINGMONSTER_PAL
  3268. ;5
  3269.  dc.l KEYS_WAD,KEYS_PTR,KEYS_FRAMES,KEYS_PAL
  3270. ;6
  3271.  dc.l ROCKETS_WAD,ROCKETS_PTR,ROCKETS_FRAMES,ROCKETS_PAL
  3272. ;7
  3273.  dc.l BARREL_WAD,BARREL_PTR,BARREL_FRAMES,BARREL_PAL
  3274. ;8
  3275.  dc.l BIGBULLET_WAD,BIGBULLET_PTR,EXPLOSION_FRAMES,EXPLOSION_PAL
  3276. ;9
  3277.  dc.l GUNS_WAD,GUNS_PTR,GUNS_FRAMES,GUNS_PAL
  3278. ;10:
  3279.  dc.l MARINE_WAD,MARINE_PTR,MARINE_FRAMES,MARINE_PAL
  3280. ;11:
  3281.  dc.l BIGALIEN_WAD,BIGALIEN_PTR,BIGALIEN_FRAMES,BIGALIEN_PAL
  3282. ;12:
  3283.  dc.l 0,0,LAMPS_FRAMES,LAMPS_PAL
  3284. ;13:
  3285.  dc.l 0,0,WORM_FRAMES,WORM_PAL
  3286. ;14:
  3287.  dc.l 0,0,BIGCLAWS_FRAMES,BIGCLAWS_PAL
  3288. ;15:
  3289.  dc.l 0,0,TREE_FRAMES,TREE_PAL
  3290. ;16:
  3291.  dc.l 0,0,TOUGHMARINE_FRAMES,TOUGHMARINE_PAL
  3292. ;17:
  3293.  dc.l 0,0,FLAMEMARINE_FRAMES,FLAMEMARINE_PAL
  3294. ;18:
  3295.  dc.l 0,0,GLARE_FRAMES,0
  3296.  ds.l 4*20
  3297.  
  3298. GLARE_FRAMES:
  3299.  dc.w 0,0
  3300.  dc.w 32*4,0
  3301.  dc.w 32*4*2,0
  3302.  dc.w 32*4*3,0
  3303.  
  3304.  dc.w 0,32
  3305.  dc.w 32*4,32
  3306.  dc.w 32*4*2,32
  3307.  dc.w 32*4*3,32
  3308.  
  3309. ALIEN_WAD:
  3310. ; incbin "ALIEN2.wad"
  3311. ALIEN_PTR:
  3312. ; incbin "ALIEN2.ptr"
  3313. ALIEN_FRAMES:
  3314. ; walking=0-3
  3315.  dc.w 0,0
  3316.  dc.w 64*4,0 
  3317.  dc.w 64*4*2,0
  3318.  dc.w 64*4*3,0
  3319.  dc.w 64*4*4,0
  3320.  dc.w 64*4*5,0
  3321.  dc.w 64*4*6,0
  3322.  dc.w 64*4*7,0
  3323.  dc.w 64*4*8,0
  3324.  dc.w 64*4*9,0
  3325.  dc.w 64*4*10,0
  3326.  dc.w 64*4*11,0
  3327.  dc.w 64*4*12,0
  3328.  dc.w 64*4*13,0
  3329.  dc.w 64*4*14,0
  3330.  dc.w 64*4*15,0
  3331. ;Exploding=16-31
  3332.  dc.w 4*(64*16),0
  3333.  dc.w 4*(64*16+16),0
  3334.  dc.w 4*(64*16+32),0
  3335.  dc.w 4*(64*16+48),0
  3336.  
  3337.  dc.w 4*(64*16),16
  3338.  dc.w 4*(64*16+16),16
  3339.  dc.w 4*(64*16+32),16
  3340.  dc.w 4*(64*16+48),16
  3341.  
  3342.  dc.w 4*(64*16),32
  3343.  dc.w 4*(64*16+16),32
  3344.  dc.w 4*(64*16+32),32
  3345.  dc.w 4*(64*16+48),32
  3346.  
  3347.  dc.w 4*(64*16),48
  3348.  dc.w 4*(64*16+16),48
  3349.  dc.w 4*(64*16+32),48
  3350.  dc.w 4*(64*16+48),48
  3351. ;dying=32-33
  3352.  dc.w 64*4*17,0
  3353.  dc.w 64*4*18,0
  3354.  
  3355.  
  3356. ALIEN_PAL:
  3357. ; incbin "alien2.256pal"
  3358.  
  3359. PICKUPS_WAD:
  3360. ; incbin "Pickups.wad"
  3361. PICKUPS_PTR:
  3362. ; incbin "PICKUPS.ptr"
  3363. PICKUPS_FRAMES:
  3364. ; medikit=0
  3365.  dc.w 0,0
  3366. ; big gun=1
  3367.  dc.w 0,32
  3368. ; bullet=2
  3369.  dc.w 64*4,32
  3370. ; Ammo=3
  3371.  dc.w 32*4,0 
  3372. ;battery=4
  3373.  dc.w 64*4,0
  3374. ;Rockets=5
  3375.  dc.w 192*4,0
  3376. ;gunpop=6-16
  3377.  dc.w 128*4,0
  3378.  dc.w (128+16)*4,0
  3379.  dc.w (128+32)*4,0
  3380.  dc.w (128+48)*4,0
  3381.  dc.w 128*4,16
  3382.  dc.w (128+16)*4,16
  3383.  dc.w (128+32)*4,16
  3384.  dc.w (128+48)*4,16
  3385.  dc.w 128*4,32
  3386.  dc.w (128+16)*4,32
  3387.  dc.w (128+32)*4,32
  3388.  dc.w (64+16)*4,32
  3389.  dc.w (64*4),48
  3390.  dc.w (64+16)*4,48
  3391.  
  3392. ; RocketLauncher=20
  3393.  dc.w (64+32)*4,0
  3394.  
  3395. ;grenade = 21-24
  3396.  dc.w 64*4,32
  3397.  dc.w (64+16)*4,32
  3398.  dc.w (64+16)*4,48
  3399.  dc.w 64*4,48
  3400.  
  3401. ; shotgun = 25
  3402.  dc.w 128*4,32
  3403.  
  3404. ; grenade launcher =26
  3405.  dc.w 256*4,0
  3406.  
  3407. ; shotgun shells*4=27
  3408.  dc.w 64*3*4,32
  3409. ; shotgun shells*20=28
  3410.  dc.w (64*3+32)*4,0
  3411. ; grenade clip=29
  3412.  dc.w (64*3+32)*4,32
  3413.  
  3414.  
  3415. PICKUPS_PAL:
  3416. ; incbin "PICKUPS.256pal"
  3417.  
  3418. BIGBULLET_WAD:
  3419. ; incbin "bigbullet.wad"
  3420. BIGBULLET_PTR:
  3421. ; incbin "bigbullet.ptr"
  3422. BIGBULLET_FRAMES:
  3423.  dc.w 0,0
  3424.  dc.w 0,32
  3425.  dc.w 32*4,0
  3426.  dc.w 32*4,32
  3427.  dc.w 64*4,0
  3428.  dc.w 64*4,32
  3429.  dc.w 96*4,0
  3430.  dc.w 96*4,32
  3431.  
  3432.  dc.w 128*4,0
  3433.  dc.w 128*4,32
  3434.  dc.w 32*5*4,0
  3435.  dc.w 32*5*4,32
  3436.  dc.w 32*6*4,0
  3437.  dc.w 32*6*4,32
  3438.  dc.w 32*7*4,0
  3439.  dc.w 32*7*4,32
  3440.  dc.w 32*8*4,0
  3441.  dc.w 32*8*4,32
  3442.  dc.w 32*9*4,0
  3443.  dc.w 32*9*4,32
  3444. BIGBULLET_PAL
  3445. ; incbin "bigbullet.256pal"
  3446.  
  3447. EXPLOSION_FRAMES:
  3448.  dc.w 0,0
  3449.  dc.w 64*4,0
  3450.  dc.w 64*4*2,0
  3451.  dc.w 64*4*3,0
  3452.  dc.w 64*4*4,0
  3453.  dc.w 64*4*5,0
  3454.  dc.w 64*4*6,0
  3455.  dc.w 64*4*7,0
  3456.  dc.w 64*4*8,0
  3457.  
  3458. EXPLOSION_PAL
  3459. ; incbin "explosion.256pal"
  3460.  
  3461. UGLYMONSTER_WAD:
  3462. ; incbin "uglymonster.wad"
  3463. UGLYMONSTER_PTR:
  3464. ; incbin "uglymonster.ptr"
  3465. UGLYMONSTER_FRAMES:
  3466.  dc.w 0,0
  3467. UGLYMONSTER_PAL:
  3468. ; incbin "uglymonster.pal"
  3469.  
  3470. FLYINGMONSTER_WAD:
  3471. ; incbin "FLYINGalien.wad"
  3472. FLYINGMONSTER_PTR:
  3473. ; incbin "FLYINGalien.ptr"
  3474. FLYINGMONSTER_FRAMES:
  3475.  dc.w 0,0
  3476.  dc.w 64*4,0 
  3477.  dc.w 64*4*2,0 
  3478.  dc.w 64*4*3,0 
  3479.  dc.w 64*4*4,0 
  3480.  dc.w 64*4*5,0 
  3481.  dc.w 64*4*6,0 
  3482.  dc.w 64*4*7,0 
  3483.  dc.w 64*4*8,0 
  3484.  dc.w 64*4*9,0 
  3485.  dc.w 64*4*10,0 
  3486.  dc.w 64*4*11,0 
  3487.  dc.w 64*4*12,0 
  3488.  dc.w 64*4*13,0 
  3489.  dc.w 64*4*14,0 
  3490.  dc.w 64*4*15,0 
  3491.  dc.w 64*4*16,0 
  3492.  dc.w 64*4*17,0 
  3493.  dc.w 64*4*18,0 
  3494.  dc.w 64*4*19,0 
  3495.  dc.w 64*4*20,0 
  3496.  
  3497. FLYINGMONSTER_PAL:
  3498. ; incbin "FLYINGalien.256pal"
  3499.  
  3500. KEYS_WAD:
  3501. ; incbin "keys.wad"
  3502. KEYS_PTR:
  3503. ; incbin "KEYS.PTR"
  3504. KEYS_FRAMES:
  3505.  dc.w 0,0
  3506.  dc.w 0,32
  3507.  dc.w 32*4,0
  3508.  dc.w 32*4,32
  3509. KEYS_PAL:
  3510. ; incbin "keys.256pal"
  3511.  
  3512. ROCKETS_WAD:
  3513. ; incbin "ROCKETS.wad"
  3514. ROCKETS_PTR:
  3515. ; incbin "ROCKETS.ptr"
  3516. ROCKETS_FRAMES:
  3517. ;rockets=0 to 3
  3518.  dc.w 0,0
  3519.  dc.w 32*4,0
  3520.  dc.w 0,32
  3521.  dc.w 32*4,32
  3522.  
  3523. ;Green bullets = 4 to 7
  3524.  dc.w 64*4,0
  3525.  dc.w (64+32)*4,0
  3526.  dc.w 64*4,32
  3527.  dc.w (64+32)*4,32
  3528.  
  3529. ;Blue Bullets = 8 to 11
  3530.  dc.w 128*4,0
  3531.  dc.w (128+32)*4,0
  3532.  dc.w 128*4,32
  3533.  dc.w (128+32)*4,32
  3534.  
  3535.  
  3536. ROCKETS_PAL:
  3537. ; incbin "ROCKETS.256pal"
  3538.  
  3539. BARREL_WAD:
  3540. ; incbin "BARREL.wad"
  3541. BARREL_PTR:
  3542. ; incbin "BARREL.ptr"
  3543. BARREL_FRAMES:
  3544.  dc.w 0,0
  3545.  
  3546. BARREL_PAL: 
  3547. ;incbin "BARREL.256pal"
  3548.  
  3549. GUNS_WAD:
  3550. ; incbin "guns.wad"
  3551. GUNS_PTR:
  3552. ; incbin "GUNS.PTR"
  3553. GUNS_FRAMES:
  3554.  
  3555.  dc.w 96*4*20,0
  3556.  dc.w 96*4*21,0
  3557.  dc.w 96*4*22,0
  3558.  dc.w 96*4*23,0
  3559.  
  3560.  dc.w 96*4*4,0
  3561.  dc.w 96*4*5,0
  3562.  dc.w 96*4*6,0
  3563.  dc.w 96*4*7,0
  3564.  
  3565.  dc.w 96*4*16,0
  3566.  dc.w 96*4*17,0
  3567.  dc.w 96*4*18,0
  3568.  dc.w 96*4*19,0
  3569.  
  3570.  dc.w 96*4*12,0
  3571.  dc.w 96*4*13,0
  3572.  dc.w 96*4*14,0
  3573.  dc.w 96*4*15,0
  3574.  
  3575.  dc.w 96*4*24,0
  3576.  dc.w 96*4*25,0
  3577.  dc.w 96*4*26,0
  3578.  dc.w 96*4*27,0
  3579.  
  3580.  dc.w 0,0
  3581.  dc.w 0,0
  3582.  dc.w 0,0
  3583.  dc.w 0,0
  3584.  
  3585.  dc.w 0,0
  3586.  dc.w 0,0
  3587.  dc.w 0,0
  3588.  dc.w 0,0
  3589.  
  3590.  dc.w 96*4*0,0
  3591.  dc.w 96*4*1,0
  3592.  dc.w 96*4*2,0
  3593.  dc.w 96*4*3,0 
  3594.  
  3595. GUNS_PAL:
  3596. ; incbin "newgunsinhand.256pal"
  3597.  
  3598. MARINE_WAD:
  3599. ; incbin "newMarine.wad"
  3600. MARINE_PTR:
  3601. ; incbin "newMARINE.ptr"
  3602. MARINE_FRAMES:
  3603.  dc.w 0,0
  3604.  dc.w 64*4,0
  3605.  dc.w (64*2)*4,0
  3606.  dc.w (64*3)*4,0
  3607.  dc.w (64*4)*4,0
  3608.  dc.w (64*5)*4,0
  3609.  dc.w (64*6)*4,0
  3610.  dc.w (64*7)*4,0
  3611.  dc.w (64*8)*4,0
  3612.  dc.w (64*9)*4,0
  3613.  dc.w (64*10)*4,0
  3614.  dc.w (64*11)*4,0
  3615.  dc.w (64*12)*4,0
  3616.  dc.w (64*13)*4,0
  3617.  dc.w (64*14)*4,0
  3618.  dc.w (64*15)*4,0
  3619.  dc.w (64*16)*4,0
  3620.  dc.w (64*17)*4,0
  3621.  dc.w (64*18)*4,0
  3622. MARINE_PAL:
  3623. ; incbin "newmarine.256pal"
  3624. TOUGHMARINE_FRAMES:
  3625.  dc.w 0,0
  3626.  dc.w 64*4,0
  3627.  dc.w (64*2)*4,0
  3628.  dc.w (64*3)*4,0
  3629.  dc.w (64*4)*4,0
  3630.  dc.w (64*5)*4,0
  3631.  dc.w (64*6)*4,0
  3632.  dc.w (64*7)*4,0
  3633.  dc.w (64*8)*4,0
  3634.  dc.w (64*9)*4,0
  3635.  dc.w (64*10)*4,0
  3636.  dc.w (64*11)*4,0
  3637.  dc.w (64*12)*4,0
  3638.  dc.w (64*13)*4,0
  3639.  dc.w (64*14)*4,0
  3640.  dc.w (64*15)*4,0
  3641.  dc.w (64*16)*4,0
  3642.  dc.w (64*17)*4,0
  3643.  dc.w (64*18)*4,0
  3644. TOUGHMARINE_PAL:
  3645. ; incbin "toughmutant.256pal"
  3646. FLAMEMARINE_FRAMES:
  3647.  dc.w 0,0
  3648.  dc.w 64*4,0
  3649.  dc.w (64*2)*4,0
  3650.  dc.w (64*3)*4,0
  3651.  dc.w (64*4)*4,0
  3652.  dc.w (64*5)*4,0
  3653.  dc.w (64*6)*4,0
  3654.  dc.w (64*7)*4,0
  3655.  dc.w (64*8)*4,0
  3656.  dc.w (64*9)*4,0
  3657.  dc.w (64*10)*4,0
  3658.  dc.w (64*11)*4,0
  3659.  dc.w (64*12)*4,0
  3660.  dc.w (64*13)*4,0
  3661.  dc.w (64*14)*4,0
  3662.  dc.w (64*15)*4,0
  3663.  dc.w (64*16)*4,0
  3664.  dc.w (64*17)*4,0
  3665.  dc.w (64*18)*4,0
  3666. FLAMEMARINE_PAL:
  3667. ; incbin "flamemutant.256pal"
  3668.  
  3669.  
  3670. BIGALIEN_WAD:
  3671. ; incbin "BIGSCARYALIEN.wad"
  3672. BIGALIEN_PTR:
  3673. ; incbin "BIGSCARYALIEN.ptr"
  3674. BIGALIEN_FRAMES:
  3675. ; walking=0-3
  3676.  dc.w 0,0
  3677.  dc.w 128*4,0
  3678.  dc.w 128*4*2,0
  3679.  dc.w 128*4*3,0
  3680. BIGALIEN_PAL:
  3681. ; incbin "BIGSCARYALIEN.256pal"
  3682.  
  3683. LAMPS_FRAMES:
  3684.  dc.w 0,0
  3685. LAMPS_PAL:
  3686. ; incbin "LAMPS.256pal"
  3687.  
  3688. WORM_FRAMES:
  3689.  dc.w 0,0
  3690.  dc.w 90*4,0
  3691.  dc.w 90*4*2,0
  3692.  dc.w 90*4*3,0
  3693.  dc.w 90*4*4,0
  3694.  dc.w 90*4*5,0
  3695.  dc.w 90*4*6,0
  3696.  dc.w 90*4*7,0
  3697.  dc.w 90*4*8,0
  3698.  dc.w 90*4*9,0
  3699.  dc.w 90*4*10,0
  3700.  dc.w 90*4*11,0
  3701.  dc.w 90*4*12,0
  3702.  dc.w 90*4*13,0
  3703.  dc.w 90*4*14,0
  3704.  dc.w 90*4*15,0
  3705.  dc.w 90*4*16,0
  3706.  dc.w 90*4*17,0
  3707.  dc.w 90*4*18,0
  3708.  dc.w 90*4*19,0
  3709.  dc.w 90*4*20,0
  3710. WORM_PAL:
  3711. ; incbin "worm.256pal"
  3712.  
  3713. BIGCLAWS_FRAMES:
  3714.  dc.w 0,0
  3715.  dc.w 128*4,0
  3716.  dc.w 128*4*2,0
  3717.  dc.w 128*4*3,0
  3718.  dc.w 128*4*4,0
  3719.  dc.w 128*4*5,0
  3720.  dc.w 128*4*6,0
  3721.  dc.w 128*4*7,0
  3722.  dc.w 128*4*8,0
  3723.  dc.w 128*4*9,0
  3724.  dc.w 128*4*10,0
  3725.  dc.w 128*4*11,0
  3726.  dc.w 128*4*12,0
  3727.  dc.w 128*4*13,0
  3728.  dc.w 128*4*14,0
  3729.  dc.w 128*4*15,0
  3730.  dc.w 128*4*16,0
  3731.  dc.w 128*4*17,0
  3732. BIGCLAWS_PAL:
  3733. ; incbin "bigclaws.256pal"
  3734.  
  3735. TREE_FRAMES:
  3736.  dc.w 0,0
  3737.  dc.w 64*4,0
  3738.  dc.w 64*2*4,0
  3739.  dc.w 64*3*4,0
  3740.  
  3741.  dc.w 0,0
  3742.  dc.w 64*4,0
  3743.  dc.w 64*2*4,0
  3744.  dc.w 64*3*4,0
  3745.  
  3746.  
  3747.  dc.w 0,0
  3748.  dc.w 64*4,0
  3749.  dc.w 64*2*4,0
  3750.  dc.w 64*3*4,0
  3751.  
  3752.  
  3753.  dc.w 0,0
  3754.  dc.w 64*4,0
  3755.  dc.w 64*2*4,0
  3756.  dc.w 64*3*4,0
  3757.  
  3758.  dc.w 0,0
  3759.  dc.w 0,0
  3760.  
  3761.  dc.w 32*8*4,0
  3762.  dc.w 32*9*4,0
  3763.  dc.w 32*10*4,0
  3764.  dc.w 32*11*4,0
  3765.  
  3766. TREE_PAL:
  3767. ; incbin "tree.256pal"
  3768.  
  3769.  
  3770.  even
  3771. ObAdds:
  3772. ; incbin "ALIEN1.ptr"
  3773. objpal:
  3774. ; incbin "ALIEN1.256pal"
  3775. TextureMaps:
  3776.  dc.l 0
  3777. ; incbin "ab3:includes/newTexturemaps"
  3778. TexturePal:
  3779.  dc.l 0
  3780. ; incbin "ab3:includes/texture256pal"
  3781.  
  3782. testval: dc.l 0